Intereting Posts
Гравитационные формы создают переменную для пользователей без ранее существовавших записей Сделать wordpress генерировать пользовательский XML-файл (а не файл Sitemap), который обновляется только при публикации нового контента? Остановите WordPress полностью и запустите свой собственный код. Сортировка типа пользовательского типа сообщений по таксономии Срок Как отобразить заголовок прикрепленного изображения в сообщении? Вы можете скрыть пустые термины с помощью get_term_children? Можно ли восстановить признанные изображения после экспорта / импорта WordPress single_cat_title эквивалент для пользовательской таксономии? Редактор переднего плана на ожидающий пост (для участников) Почему на каждой странице добавлена ​​ссылка stylesStyles-css stylesheet? Импорт пользователей в Buddypress с настраиваемыми полями Ограничить определенные сообщения от отправки подписчикам фида Добавьте дополнительные непереписываемые директивы .htaccess для мультисайтов через фильтр mod_rewrite_rules Как получить идентификатор экрана страницы Вставьте пользовательский идентификатор в wp_get_attachment_link

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() в кодексе, как эта функция работает.