Intereting Posts
Сообщения из всех категорий отображаются вместо определенной категории Изменить состояние логотипа на основе URL-адреса Лучшее решение для управления вложениями мультимедиа с помощью `wp_editor ()`? Wp_query Добавить конкретные ожидающие сообщения Преобразование существующего сайта в сеть Добавить действие, которое будет срабатывать при обновлении опубликованного сообщения Добавление персонализированного статуса сообщения для видимости в мета-окне публикации Проблема с добавлением крошечного mce в textarea в пользовательский плагин Показать более 10 сообщений в файле author.php Как создать поля комментариев в WordPress? Меню Bootstrap Drop Down не работает Перемещение wp-config.php: Это можно сделать после запуска сайта? Поддомены подстановочных подстановок WordPress на Plesk Как оценить массив get_posts с is_page? Страница в качестве ребенка пользовательского типа сообщения

Метабокс с флажком не обновляется

Я пытаюсь установить meta_box с одним флажком, все будет хорошо, однако, если я сниму его и сохранил сообщение, он снова будет отмечен как отмеченный, я смотрю, но я не могу найти свою ошибку.

Посмотрите мой код.

function am_checkbox_option() { global $post; $custom = get_post_custom($post->ID); $front_event = $custom["front_event"][0]; wp_nonce_field(__FILE__, 'am_front_event'); if( $front_event ){ $checked = "checked=\"checked\""; }else{ $checked = "";} ?> <label>Display Content? (type yes):</label> <input type="checkbox" name="front_event" value="true" <?php echo $checked; ?> /> <?php } }); add_action('save_post', function() { if ( defined( 'DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; global $post; if ( $_POST && !wp_verify_nonce($_POST['am_front_event'], __FILE__) ) { return; } if ( isset($_POST['front_event']) ) { update_post_meta($post->ID, 'front_event', $_POST['front_event']); } }); 

заранее спасибо

Solutions Collecting From Web of "Метабокс с флажком не обновляется"

Вот код, который я использовал раньше – основное отличие в том, что вы проверяете, существует ли meta, а не какая его ценность, чтобы определить, следует ли ее проверять.

 // Checkbox Meta add_action("admin_init", "checkbox_init"); function checkbox_init(){ add_meta_box("checkbox", "Checkbox", "checkbox", "post", "normal", "high"); } function checkbox(){ global $post; $custom = get_post_custom($post->ID); $field_id = $custom["field_id"][0]; ?> <label>Check for yes</label> <?php $field_id_value = get_post_meta($post->ID, 'field_id', true); if($field_id_value == "yes") $field_id_checked = 'checked="checked"'; ?> <input type="checkbox" name="field_id" value="yes" <?php echo $field_id_checked; ?> /> <?php } // Save Meta Details add_action('save_post', 'save_details'); function save_details(){ global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post->ID; } update_post_meta($post->ID, "field_id", $_POST["field_id"]); } 

просто добавьте условие else, чтобы удалить мета-сообщение, если оно не было проверено, и ваш код будет работать отлично, поэтому измените:

 if ( isset($_POST['front_event']) ) { update_post_meta($post->ID, 'front_event', $_POST['front_event']); } 

в

 if ( isset($_POST['front_event']) ) { update_post_meta($post->ID, 'front_event', $_POST['front_event']); }else{ delete_post_meta($post->ID, 'front_event'); }