Intereting Posts
Как хранить данные для сообщений / страниц, построенных с помощью drag-n-drop builder? Есть ли крючок, который запускается после входа пользователя в систему? как я могу ограничить количество экземпляров моего виджета Показывать определенные термины из пользовательской таксономии, но исключать «родительские» термины? детская тема textdomain: не загружается ВСЕ! Как импортировать категории с описаниями из файла CSV? Пользовательские типы сообщений и дополнительные пользовательские поля (с добавлением дополнительного поля повторителя) Ссылка на регулярное выражение String вместо роли 'contributor' db преобразует десятичное число неправильно Сгенерированные носители имеют неправильное соотношение сторон Почему мой сайт не будет автоматически применять обновления после обновления до 3.7? Выполнять внутреннюю переадресацию в WordPress? Дайте страницы ссылок wp своим собственным шаблоном расширенный пейджинг в wordpress Избавление от / my_custom_post_type / в одном URL-адресе просмотра

set_post_format, вызванный после wp_update_post при использовании массового редактирования?

EDIT: см. Комментарии ниже. меняя вопрос, чтобы отразить эту новую информацию

Из того, что я понимаю из кода, save_post предназначен для того, чтобы всегда срабатывать после сохранения сообщения (и при создании нового сообщения). Тем не менее, я испытываю некоторое нечетное поведение при использовании Bulk Edit. Используя приведенный ниже код, моя функция синхронизации работает при использовании Quick Edit и Bulk Edit просто отлично, за исключением синхронизации Post Format при использовании только Bulk Edit.

Просто, чтобы быть ясным, единственное, что я синхронизирую, которые доступны с Bulk Edit, это автор, формат сообщения, категории, теги и статус публикации. Все они прекрасно обновляются в WordPress DB, но по какой-то причине только автор, теги и категории синхронизируются с внешней БД, используя мой метод синхронизации. Post Format не синхронизируется, но если я снова запустил действие «Массовое редактирование», даже не меняя ничего, произойдет синхронизация, из-за чего я подумал, что функция save_post запускается до того, как сообщение было сохранено, заставив старые данные синхронизировать, но это не может быть, если остальные работают (ПРИМЕЧАНИЕ. Я обнаружил, что на самом деле это так, за исключением только post_format и установки липкой почты (что меня не волнует)). Вот мой код, расположенный в моем основном файле плагина:

require( plugin_admin_dir . 'plugin-sync.php' ); add_action( 'save_post', 'savethepost', 2000); function savethepost($post_id) { if (get_post_meta($post_id, '_externaldb_post_donotsync', true) == 1) { return; } else { if (get_post_status( $post_id ) != 'publish') { plugin_sync::externaldb_delete($post_id); } else { plugin_sync::externaldb_sync($post_id); } // end if } // end if } 

Поскольку я изначально опубликовал это, я обнаружил, что set_post_format происходит после wp_update_post при использовании Bulk Edit. Как я могу создать работу, чтобы получить новый формат сообщения при запуске моей функции синхронизации? Есть ли еще один крючок, который я могу использовать? Во всяком случае, я надеюсь, что этого достаточно. Спасибо за помощь.

Solutions Collecting From Web of "set_post_format, вызванный после wp_update_post при использовании массового редактирования?"

Я смог решить свою проблему, вызвав set_post_format в моем обратном вызове save_post и убедившись, что его набор и не равен опции «без изменений». Не уверен, что это лучший способ, но он работает.

 require( plugin_admin_dir . 'plugin-sync.php' ); add_action( 'save_post', 'savethepost', 2000); function savethepost($post_id) { if (get_post_meta($post_id, '_externaldb_post_donotsync', true) == 1) { return; } else { if (get_post_status( $post_id ) != 'publish') { plugin_sync::externaldb_delete($post_id); } else { if ( isset( $_REQUEST['post_format'] ) && $_REQUEST['post_format'] != -1 ) { set_post_format($post_id, $_REQUEST['post_format']); } plugin_sync::externaldb_sync($post_id); } // end if } // end if }