Intereting Posts
Ссылка для обработки запроса $ _GET Возможно ли создать резервную копию WordPress, просто скопировав ее? В мою ссылку добавлены странные символы Что произойдет, если я удалю все строки, представляющие пост-ревизию, из таблицы сообщений в базу данных WordPress? Сравнение WordPress WP_Query не работает? Мета-запрос для дублирования meta_key с разными значениями Создайте точку изображения для размещения URL-адреса вместо страницы вложения Извлечение массива postmeta с параметрами $ wpdb и in_array Запрос по категориям и настраиваемое поле – Shortcode Несколько разработчиков / редакторов, работающих на незавершенном участке Удаленная установка не найдет родительскую тему, если задана тема Child Theme, но локальная установка Странная ошибка темы – родительский стиль, иногда показывающий, хотя детская тема Как создать плагин или тему с помощью шаблона MVC? Темы не отображаются на панели инструментов -> Внешний вид -> Темы Пользовательские таксономии не отображаются в Admin

Почему эта функция update_post_meta не удаляет собственное поле?

Я пытаюсь установить значение мета-ключа «да» или null с помощью флажка, чтобы я мог выбирать сообщения, используя запрос, который проверяет наличие мета-ключа и не использует значение meta_key. Я не хочу добавлять meta_key ко всем существующим сообщениям и хочу, чтобы meta_key удалялась при снятии флажка.

Но update_post_meta в конце этой функции не удаляет флажок meta_key featured-checkbox check при обновлении. Как я могу получить функцию для удаления ключа?

 // Featured Post metabox function prfx_featured_meta() { add_meta_box( 'prfx_meta', __( 'Featured Posts', 'prfx-textdomain' ), 'prfx_meta_callback', 'post', 'side', 'high' ); } add_action( 'add_meta_boxes', 'prfx_featured_meta' ); /** * Outputs the content of the meta box */ function prfx_meta_callback( $post ) { wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' ); $prfx_stored_meta = get_post_meta( $post->ID ); ?> <p> <span class="prfx-row-title"><?php _e( 'Check if this is a featured post: ', 'prfx-textdomain' )?></span> <div class="prfx-row-content"> <label for="featured-checkbox"> <input type="checkbox" name="featured-checkbox" id="featured-checkbox" value="yes" <?php if ( isset ( $prfx_stored_meta['featured-checkbox'] ) ) checked( $prfx_stored_meta['featured-checkbox'][0], 'yes' ); ?> /> <?php _e( 'Featured Item', 'prfx-textdomain' )?> </label> </div> </p> <?php } /** * Saves the custom meta input */ function prfx_meta_save( $post_id ) { // Checks save status $is_autosave = wp_is_post_autosave( $post_id ); $is_revision = wp_is_post_revision( $post_id ); $is_valid_nonce = ( isset( $_POST[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false'; // Exits script depending on save status if ( $is_autosave || $is_revision || !$is_valid_nonce ) { return; } // Checks for input and sanitizes/saves if needed // How do I delete the featured-checkbox key and not update it? if( isset( $_POST[ 'featured-checkbox' ] ) ) { update_post_meta( $post_id, 'featured-checkbox', sanitize_text_field( $_POST[ 'featured-checkbox' ] ) ); } } add_action( 'save_post', 'prfx_meta_save' ); 

Обновление 12/22/16: это изменение работает:

 // Checks for input and saves - save checked as yes or deletes meta_key if no if( isset( $_POST[ 'featured-checkbox' ] ) ) { update_post_meta( $post_id, 'featured-checkbox', 'yes' ); } else { delete_post_meta( $post_id, 'featured-checkbox' ); } 

Вы ищете delete_post_meta($post_id, $meta_key, $meta_value);

параметры

$ post_id (целое число) (обязательно) Идентификатор сообщения, из которого вы удалите поле. По умолчанию: нет

$ meta_key (строка) (обязательно) Ключ поля, которое вы удалите. По умолчанию: нет

$ meta_value (mixed) (необязательно) Значение поля, которое вы удалите. Это используется для различения нескольких полей с одним и тем же ключом. Если оставить пустым, все поля с заданным ключом будут удалены. По умолчанию: Пусто