Как в WP перехватить событие завершения работы плагина
Я хочу запускать свой плагин после выполнения другого плагина в WP. Такое возможно? Если да, то каким хуком это можно сделать?
Имеется ввиду следующая ситуация: плагин "WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange" работает при экспорте фида из 1С. Сразу после его работы мне необходимо изменить некоторые атрибуты товаров. Плагин изменения атрибутов у меня написан, но сейчас он выполняется по расписанию wp-cron, а мне нужно чтобы мой плагин выполнялся сразу же после завершения работы плагина "WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange".
Ответы (2 шт):
Есть хук/экшн plugin_loaded, он срабатывает после загрузки указанного в параметре плагина.
В параметр передаётся путь к главному файлу плагина. Например plugin-slug/plugin-slug.php
Комментируя вопрос, я как в воду глядел по поводу хука shutdown.
Плагин WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange (WC1C) начинает свою работу на хуке template_redirect с приоритетом -10, а заканчивает, закрывая транзакцию в базе, на php-хуке shutdown. php-хуки shutdown выполняются в том порядке, как они были зарегистрированы.
В вашем плагине надо зарегистрировать свой php-хук shutdown после WC1C и уже в нём выполнить необходимые действия.
function my_shutdown_function() {
global $wc1c_is_transaction;
// Если WC1C отработал, то wc1c_is_transaction должна быть false.
if ( ! isset( $wc1c_is_transaction ) || false !== wc1c_is_transaction) {
return;
}
// Здесь ваши действия по изменению атрибутов товара.
}
function my_template_redirect() {
register_shutdown_function( 'my_shutdown_function' );
}
add_action( 'template_redirect', 'my_template_redirect' );