Intereting Posts
Необязательно вызывать add_submenu_page и add_menu_page из hook_Admin? Magic Fields дает ошибку Файл ___ не существует? Изображение не отображается в области успеха медиа-загрузчика – отслеживание бесплатная форма wordpress Пользовательская роль пользователя не отображается в admin Отображение нескольких случайных сообщений, но убедитесь, что выполнено условие Создатель HTML-таблицы в метабоке для размещения темы сообщения Помогите! Я изменил домен, и теперь я не могу войти через admin онлайн Расположение пунктов меню WordPress Как мигрировать, содержит ли URL-адрес жесткого кода WordPress или короткого кода? Получить идентификатор родительской страницы / меню текущего сообщения Когда WP игнорирует контент, добавленный через внутренний редактор? Как отключить сообщения WP_DEBUG_LOG из определенного плагина или темы? как отображать пользовательские поля сообщения на веб-странице Санитирование sql в функции

Как использовать post_title пользовательского типа сообщения как таксономии

У меня есть несколько пользовательских типов сообщений для определения различных типов контента и одного CPT, чтобы настроить, какие поля должны отображаться. Конфигурация CPT также определяет таксономию, поэтому я могу выбрать и выбрать, с какой конфигурацией создается CPT.
Термин таксономии определяется post_title его CPT.

Добавление термина к таксономии не вызывает проблем с подключением к save_post -hook.
Моя проблема заключается в изменении названия таксономии или ее удалении. Ожидаемое поведение заключается в том, что, когда я изменяю post_title моей таксономии, меняется также название термина таксономии exixtig. В это время добавлен только новый.
То же самое с удалением CP, который определяет таксономию.

Есть ли крючок, который на самом деле срабатывает только когда сообщение обновляется, и где я могу получить $post_before и $post_after ?
Если нет, как я могу надежно проверить, обновляется ли сообщение?
save_post -hook запускается при создании сообщения в первый раз, а также при обновлении существующего сообщения, которое немного раздражает.

Есть ли крючок, который на самом деле срабатывает только когда сообщение обновляется, и где я могу получить $ post_before и $ post_after?

Вероятно, вы ищете post_updated hook.

Применение

 add_action( 'post_updated', 'wpse_264720_post_updated', 10, 3 ); function wpse_264720_post_updated( $post_ID, $post_after, $post_before ) { //* Bail if this is an autosave if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } //* Bail if this is a post revision if( wp_is_post_revision( $post_ID ) ) { return; } //* Bail if not the correct post types if( ! in_array( $post_after->post_type, [ 'post-type-1', 'post-type-2' ] ) ) { return; } //* If you add/update/delete posts, remove action to avoid infinite loop remove_action( 'post_updated', 'wpse_264720_post_updated', 10 ); //* Do something useful after the post was updated //* If the post was updated, remove save_post action remove_action( 'save_post', 'wpse_264720_save_post', 10, 3 ); } //* Hypothetical function hooked to save_post add_action( 'save_post', 'wpse_264720_save_post', 10, 3 ); function wpse_264720_save_post( $post_id, $post, $update ) { //* Bail if post was an update if( $update ) { return; } //* Do something useful on save_post }