Intereting Posts
Добавление настраиваемых полей при выборе определенных шаблонов update_option в WordPress AJAX Использование дополнительных пользовательских полей в виджетах Проверьте перед публикацией, если уже существует сообщение с текущим значением настраиваемого поля WP-Admin показывает (1) обновление, но обновление для плагина, темы или WordPress отсутствует Добавить родительскую ссылку в подменю Сортировка по пользовательским сообщениям с прикрепленными файлами Как настроить сайт для автоматического обновления WordPress постоянно запрашивает страницы от себя Архивы для пользовательских типов сообщений (без страниц) Можно ли изменить существующий статус сообщения от «ожидающего» до «публикации» по электронной почте? Как добавить пользовательские столбцы в экран пользовательского типа сообщений Как решить нечеткую ошибку в Qi в WordPress? Текущая тема сломана – после миграции сервера и домена shortcode – несколько экземпляров одного имени параметра в одном экземпляре короткого кода

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

У меня возникла проблема с обновлением 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 и комментарий, я попытаюсь выписать некоторый пример кода (при условии, что вам это нужно)