upgrader_process_complete
Спрацьовує після завершення роботи апгрейтера (upgrader). Дозволяє зробити щось після оновлення плагіна, теми, WP, мовного пакета.
Хук спрацьовує вже після того, як оновлені файли оновлюються. Наприклад, при оновленні плагіна, хук спрацює після того, як файли плагіна будуть оновлені.
Не обов’язково використати цей хук рано. Наприклад, його можна використовувати у файлі functions.php теми.
Дивіться також upgrader_package_options .
Використання
add_action( 'upgrader_process_complete', 'wp_kama_upgrader_process_complete_action', 10, 2); /** * Function for `upgrader_process_complete` action-hook. * * @param WP_Upgrader $upgrader WP_Upgrader instance. У інших контекстах цей пункт буде Theme_Upgrader, Plugin_Upgrader, Core_Upgrade, або Language_Pack_Upgrader instance. * @param array $hook_extra Array of bulk item update data. * * @return void */ function wp_kama_upgrader_process_complete_action( $upgrader, $hook_extra ){ // action... }
-
$this
(WP_Upgrader) Примірник WP_Upgrader .
При різних випадках тут можуть бути об’єкти:
-
$hook_extra
(масив) Масив даних елемента, що оновлюється.
action (рядок)
Тип події.
За замовчуванням: ‘update’type (рядок)
Тип процесу оновлення. Можливо:plugin
,theme
,translation
,core
.bulk (true/false)
Чи є процес оновлення масовим оновленням (bulk).
Типово: trueplugins (масив)
Масив шляхів до базових імен основних файлів плагінів.themes (масив)
Ярлики (слаги) теми.translations (масив)
Масив даних перекладів.language (рядок)
Локаль перекладу.type (рядок)
Переклад. Можливо:plugin
,theme
,core
.slug (рядок)
Текстовий домен перекладу. Ярлик (склад) теми/плагіна або “default” для основних перекладів.- version (рядок)
Версія теми, плагіна чи ядра.
Приклади
#1 Приклад оновлення плагіна і того, які дані отримує хук
Оновлюємо плагін Query Monitor з 3.3.2 до 3.3.3. І записуємо дані змінних усередині хука у файл __upgrader_process_complete_info.txt
у корені сайту.
// Тест апгрейду add_action( 'upgrader_process_complete', 'my_upgrate_function', 10, 2); function my_upgrate_function( $upgrader_object, $hook_extra ){ $put = ''; $put .= '$upgrader_object = '. print_r( $upgrader_object, 1 ) ."nnn"; $put .= '$hook_extra = '. print_r($hook_extra, 1). "nnn"; foreach( $hook_extra['plugins'] as $plugin_rel_path ){ $data = get_plugin_data( WP_PLUGIN_DIR ."/$plugin_rel_path" ); $put .= "$plugin_rel_path data = ". print_r($data, 1). "nnn"; } file_put_contents( "{$_SERVER['DOCUMENT_ROOT']}/__upgrader_process_complete_info.txt", $put ); }
Отримаємо у файлі __upgrader_process_complete_info.txt
(всередині функції-хука):
#2 Повідомлення при оновленні плагіна
Цей міні-плагін демонструє, як відображати сповіщення під час оновлення плагіна.
Відображає різні повідомлення в адмінці (див. admin_notices ): одне під час встановлення плагіна (активації) та інше при оновленні плагіна (для цього використовується поточний хук).
<?php /** * Plugin Name: Upgrader Process Example * Plugin URI: https://catapultthemes.com/wordpress-plugin-update-hook-upgrader_process_complete/ * Description: Just an example of using upgrader_process_complete * Version: 1.0.0 * Автор: Catapult Themes * Author URI: https://catapultthemes.com/ * Text Domain: wp-upe * Domain Path: /languages */ defined( 'ABSPATH' ) || exit; add_action( 'upgrader_process_complete', 'wp_upe_upgrade_completed', 10, 2); add_action( 'admin_notices', 'wp_upe_display_update_notice'); add_action( 'admin_notices', 'wp_upe_display_install_notice'); # При активації. Перехідний режим, щоб ми знали, що щойно активували плагін register_activation_hook( __FILE__, function() { set_transient( 'wp_upe_activated', 1); } ); /** * This function runs when WordPress completes його upgrade process * It iterates through each plugin updated to see if ours is included * * @param array $upgrader_object * @param array $options */ function wp_upe_upgrade_completed( $upgrader_object, $options ) { // The path to our plugin's main file $our_plugin = plugin_basename( __FILE__ ); // If an update has taken place and the updated type is plugins and the plugins element exists if( $options['action'] === 'update' && $options['type'] === 'plugin' && isset( $options['plugins'] ) ) { // Iterate through the plugins being updated and check if ours is there foreach( $options['plugins'] as $plugin ) { if( $plugin == $our_plugin ) { // Set a transient to record that our plugin has just been updated set_transient( 'wp_upe_updated', 1); } } } } /** * Show a notice to anyone who has just updated this plugin * Ця стаття повинна бути відтворена на будь-який час, яка має налаштований Plugin for First Time */ function wp_upe_display_update_notice() { // Check the transient to see if we've just updated the plugin if( get_transient( 'wp_upe_updated' ) ) { echo '<div class="notice notice-success"><p>' . __( 'Thanks for updating', 'wp-upe' ) . '</p></div>'; delete_transient('wp_upe_updated'); } } /** * Show a notice to anyone who has just installed the plugin for the first time * Ця стаття повинна бути відтворена на будь-який час, яка має досконало updated this plugin */ function wp_upe_display_install_notice() { // Check the transient to see if we've just activated the plugin if( get_transient( 'wp_upe_activated' ) ) { echo '<div class="notice notice-success"><p>' . __( 'Thanks for installing', 'wp-upe') . '</p></div>'; // Delete the transient so we don't keep displaying the activation message delete_transient('wp_upe_activated'); } }
список змін
З версії 3.6.0 | Введено. |
З версії 3.7.0 | Added to WP_Upgrader::run() . |
З версії 4.6.0 | $translations був added як можливий argument до $hook_extra . |
Де викликається хук
Де використовується хук у WordPress
add_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20);
add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0);
add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0);
add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0);