Intereting Posts
Если текущий пользователь является администратором или редактором Пользовательская таксономия – Теги Метабокс показывает вместо категорий Непрямая модификация перегруженного свойства WP_Post :: $ classes не влияет Geo Sorting Post Как установить JavaScripts в плагин Есть ли недостатки, чтобы не использовать get_header (), get_sidebar и get_footer ()? Есть ли способ удалить плагины на панели управления – где вы не можете определить пул по имени плагинов? Обновление до 4.1 фиксированной ошибки синтаксического анализа Почему я не могу использовать константу класса как текстовый домен? Что было бы правильным именем для настраиваемого типа сообщений, созданного для статического контента? Как добавить настраиваемые фильтры запросов в WP_User_Query Возможны ли страницы архива категории или тега? Как разместить номера страниц со следующим / предыдущим в списке сообщений / категорий? Нужна помощь при перезаписи permalink для пользовательских типов сообщений с иерархическими отношениями Как создать редактор WP с помощью javascript

RW Meta Box, сообщение об ошибке

Я использую RW_Meta_Box плагин от Rilwis .

Я использую CPT и добавляю пользовательский мета-ящик и удаляю title и editor .

Но я все же хочу указать название по некоторым очевидным причинам.

Я создал CPT и мета-ящик, и все работало отлично, включая страницу all posts используя custom column перехватчики custom column .

Как только я сидел, чтобы установить заголовок сообщения на одно из полей в мета-поле, мне не удалось получить желаемые результаты. Я попытался найти решения, которые я выбрал, просматривая этот сайт Q & A.

Сначала я попробовал:

SOLUTION1:

 add_action('submitpost_box', 'hidden_type_title'); function hidden_type_title() { global $current_user, $post, $post_type; global $prefix; $md = rwmb_meta($prefix . 'name', array('type' => 'text'), $post->ID); if ($post->post_type == 'MY_CPT_NAME') { ?> <input type="hidden" name="post_title" value="<?php echo esc_attr(htmlspecialchars($md)); ?>" id="title" /> <?php } else { return; } } 

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

Поэтому я продолжил использовать save_post так:

SOLUTION2:

 add_action('save_post', 'post_updated'); function post_updated($post_id) { global $current_user, $post; if ($post->post_type != 'MY_CPT_NAME') { return; } global $prefix; $md = rwmb_meta($prefix . 'name', array('type' => 'text'), $post_id); // verify post is not a revision & not an autosave if (!wp_is_post_revision($post_id) && !(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)) { // set the new post title $post->ID = $post_id; $post->post_title = $md; // update the post, removing the action to prevent an infinite loop remove_action('save_post', 'post_updated'); wp_update_post($post); add_action('save_post', 'post_updated'); return; } } 

Теперь, я в худшем положении, название сообщения сразу устанавливается, но мои мета-данные данных как-то не сохраняются.

Что может быть неправильно с первым решением?

Solutions Collecting From Web of "RW Meta Box, сообщение об ошибке"

Вот решение, которое использует преимущество крючка действия Rilwis … так что вы можете получить прибыль от его проверки nonce без необходимости добавлять свои собственные.

 add_action('rwmb_after_save_post', 'post_updated'); function post_updated($post_id) { // verify post is not a revision & not an autosave if (!wp_is_post_revision($post_id) && !(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)) { global $prefix; $prefix . 'name'; // check that the custom field is being POSTED if( isset( $_POST[$prefix . 'name'] ) ){ $my_post = array(); $my_post['ID'] = $post_id; $my_post['post_title'] = sanitize_title( $_POST[$prefix . 'name'] ); // Update the post into the database wp_update_post( $my_post ); } } } 

Чтобы ограничить эту функцию только запуском для определенного метаболизма, вы можете использовать это add_action :

 add_action("rwmb_{$meta_box['id']}_after_save_post", 'post_updated'); 

Не видя определения вашего метаболизма, я не знаю, как изменить идентификатор, поэтому вам придется это сделать.

NB: Непроверенный, но я думаю, что он близок. См. wp_update_post() в кодексе, как эта функция работает.