Intereting Posts
Изменение окна поиска виджета Как заказать цикл category.php на 'meta_value'? Создание плагина, который будет добавлять параметры. Где должны отображаться страницы меню опций? Передача переменных из header.php в шаблон и vice verca установка комментариев по умолчанию для страниц и пользовательских типов сообщений? Что такое бесплатный бесплатный список подписчиков? Найти все сообщения от post_author Многоузловая установка с субдоменами на субдомене Каковы термины и таксономия, как они связаны с постами и как эти три хранятся в базе данных? Отображать количество сообщений через адресную панель? Ошибка WordPress с нелатинскими символами Как получить сообщения с миниатюрой в WP_Query? WooCommerce: не удается использовать wc_get_products для пользовательских конечных точек API REST Разница между кэшированием фрагментов и wp_cache Постоянная ссылка установлена ​​на /% postname% /, но все еще есть ссылки, индексированные в форме? P = x

Почему я должен дважды нажать кнопку «Обновить», чтобы сохранить значения метаданных?

У меня возникла проблема с обновлением post_date в пользовательской функции, которую я написал.

Я пытаюсь изменить «post_date» на свое обычное значение «meta_date».

Вот функция:

function cfc_reset_postdate( $data, $postarr ) { // If it is our form has not been submitted, so we dont want to do anything if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if($data['post_type'] == 'scripture-memory') { $date = get_post_meta( get_the_ID(), 'cfc_date', true ); $date = DateTime::createFromFormat('D - M j, Y', $date); $date = $date->format('Ym-d'); $data['post_date'] = $date; return $data; } add_filter( 'wp_insert_post_data', 'cfc_reset_postdate', '10', 2); 

Он работает, за исключением того, что я должен дважды нажать кнопку «Обновить», чтобы изменить post_date в соответствии с моей новой метаданной.

Я прочитал что-то в wp-include http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/post.php#L2380 в строке 2380 «Если параметр $ postarr имеет параметр« ID » к значению, то сообщение будет обновлено ». Не уверен, что это значит, но я думаю, что это может помочь мне решить эту проблему.

Что я делаю не так?

РЕДАКТИРОВАТЬ:

Вот код, который я отправляю в плагин мета-коробки:

 $prefix = 'cfc_'; global $meta_boxes; $meta_boxes = array(); // 1st meta box $meta_boxes[] = array( // Meta box id, UNIQUE per meta box 'id' => 'scripture_memory_verse', // Meta box title - Will appear at the drag and drop handle bar 'title' => 'Scripture Memory Verse', // Post types, accept custom post types as well - DEFAULT is array('post'); (optional) 'pages' => array( 'scripture-memory' ), // Where the meta box appear: normal (default), advanced, side; optional 'context' => 'normal', // Order of meta box: high (default), low; optional 'priority' => 'high', // List of meta fields 'fields' => array( array( // Field name - Will be used as label 'name' => 'Reference', // Field ID, ie the meta key 'id' => $prefix . 'reference', // Field description (optional) 'desc' => 'If you don\'t spell the book correctly, the verse won\'t show up!', // CLONES: Add to make the field cloneable (ie have multiple value) 'clone' => true, 'type' => 'text' ), array( 'name' => 'Day', 'id' => "{$prefix}date", 'type' => 'date', 'desc' => '(What Sunday are we saying this verse)', // Date format, default yy-mm-dd. Optional. See: http://goo.gl/po8vf 'format' => 'DD - M d, yy' ) ) 

);

Solutions Collecting From Web of "Почему я должен дважды нажать кнопку «Обновить», чтобы сохранить значения метаданных?"

Проблема заключается в том, что вы используете get_post_meta() , но поскольку вы подключаете wp_insert_post_data вы еще не установили метаданные сообщения (потому что крюк срабатывает до того, как сообщение будет вставлено в базу данных. Вы должны извлекать данные из представления метаданных и пропуская любые фильтры, которые вы используете для update_post_meta() . Если вы разместите код, в котором вы установите postmeta и комментарий, я попытаюсь выписать некоторый пример кода (при условии, что вам это нужно)