очистка почтовых метаданных при автосохранении

Для начала я использую этот БОЛЬШОЙ ответ для достижения пользовательских типов сообщений, а также настраиваемый способ вставки этих типов сообщений на другие страницы, вы можете просмотреть этот ответ здесь: Пользовательское поле / мета, заполненное раскрывающимся списком существующих сообщений?

Однако я сталкиваюсь с проблемой, когда автомат WordPress сохраняет себя, он очищает все метаданные, которые я вложил в формы.

ПРИМЕР:

Я выбираю 3 drop downs, которые я хочу из своего метаболизма, и ударяю обновление.

Перезагрузка страницы и 3 варианта по-прежнему выбраны. В phpMyAdmin я могу найти метаданные и увидеть массив на месте, как и должно быть.

Теперь я жду, пока WordPress автоматически сохранит.

Как только это произойдет, я смогу либо обновить страницу (не обновлять, просто обновлять), а метаданные потерять, или я могу найти метаданные в phpMyAdmin, и он ничего не отобразит (то есть: его нет).

Я предполагаю, что это имеет какое-то отношение к необходимости привязки к другому крюку (что-то вроде автообновления) или что-то в этом роде, но даже тогда не имеет смысла, что он фактически удалит ваши метаданные (а не просто не будет автоматически обновлять Это).

Последнее примечание: если вы копируете и вставляете код Mikes в functions.php, вы можете легко восстановить мою ошибку (в wordpress 3.1) очень просто.

Solutions Collecting From Web of "очистка почтовых метаданных при автосохранении"

Используя сохранение post action, я проверяю состояние:

<?php add_action('save_post' ,'my_save_postdata'); function my_save_postdata ( $post_id ) { if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { return $post_id; } // logic } 

Ну, как всегда, я чувствую себя манекеном, но после долгих поисков в Интернете и видя, что кажется, что у многих людей есть этот вопрос, и я не могу найти ответ нигде, я думаю, что я не так медленно!

важный код – это что-то в этом роде:

 add_filter('wp_insert_post_data',array(__CLASS__,'filter_wp_insert_post_data'),10,2); static function filter_wp_insert_post_data($data, $postarr) { update_post_meta($postarr['ID'],'_offices',$postarr['offices']); return $data; } 

что происходит, этот код запускается, но нет $ postarr ['office'], поэтому вместо этого он вводит пустые данные! поэтому быстрое решение этого:

 if(isset($postarr['offices'])) update_post_meta($postarr['ID'],'_offices',$postarr['offices']); 

Если данные, которые вы хотите вставить, не установлены, они не будут обновляться!

Я не уверен, почему wordpress не передает эти переменные в автоматическом сохранении, но он работает на реальном сохранении, но в любом случае это работает, поэтому я счастлив!