Intereting Posts
Импортировать сообщение WordPress Post Slash с помощью прямого слэш Покажу только первые 10 сообщений WordPress, а не все мои сообщения Где хранить данные пользовательской маркировки, связанные с настраиваемым типом сообщения Использование тэга% postname% с пользовательским Permastruct создает 400 ошибок с неправильным запросом с сервера Невозможно фильтровать / группировать элементы меню в зависимости от категории страниц в меню с помощью wp_nav_menu Функция для установки типа продукта в Woocommerce Архивы категорий с ежемесячной разбивкой на страницы Что это за файл: wp-config-wpe.php? Пользовательская таксономия возвращает 404 Правило перезаписи для admin-ajax.php Реплицировать варианты формы Drupal как таксономии? Как отобразить измененный пост сегодня Как добавить другую страницу на вкладке администратора панели администратора? как я могу получить разбивку на страницы так, как хочу, когда сообщения с помощью функции get_posts wp_enqueue_script не работает?

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

Я пытаюсь установить 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'); }