register_deactivation_hook()
Реєструє функцію, яка запускатиметься після деактивації плагіна.
Вішає вказану в другому параметрі функцію подію, назва якої залежить від параметра $file : deactivate_$file.
Хуків немає.
Повертає
null. Нічого не вертає.
Використання
register_deactivation_hook($file, $function);
- $file
(рядок) (обов’язковий) - Шлях до головного файлу плагіна у рубриці
wp-content/plugins. Можна вказати повний шлях. Зазвичай використовується магічна константа __FILE__. - $function
(рядок/масив) (обов’язковий) - Назва функції зворотного виклику (callback), яка запускатиметься при деактивації плагіна.
Приклади
#1 Запуск функції при деактивації плагіна
Припустимо функція, яку нам потрібно запустити при деактивації плагіна називається myplugin_deactivate() і знаходиться вона в основному файлі плагіна:
wp-content/plugins/myplugin.php
або
wp-content/plugins/myplugin/myplugin.php
Тоді використовуйте такий код, щоб викликати функцію деактивації:
register_deactivation_hook( __FILE__, 'myplugin_deactivate');
function myplugin_deactivate(){
// робимо що необхідно при деактивації плагіна.
}Цей рядок викликає функцію myplugin_deactivate() під час деактивації плагіна.
#2 Звичайні функції (не класи)
Цей демонстраційний приклад показує як викликати функції Активація/деактивація/видалення у файлі плагіна:
<?php
defined( 'ABSPATH' ) OR exit;
/**
* Plugin Name: (WCM) Activate/Deactivate/Uninstall - Functions
* Description: Додаток Plug-in для show activation/deactivation/uninstall callbacks for plain functions.
* Autor: Franz Josef Kaiser/wecodemore
* Author URL: http://unserkaiser.com
* Plugin URL: http://wordpress.stackexchange.com/questions/25910/uninstall-activate-deactivate-a-plugin-typical-features-how-to/25979#25979
*/
function WCM_Setup_Demo_on_activation()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
$plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
check_admin_referer("activate-plugin_{$plugin}");
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
function WCM_Setup_Demo_on_deactivation()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
$plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
check_admin_referer( "deactivate-plugin_{$plugin}");
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
function WCM_Setup_Demo_on_uninstall()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
check_admin_referer( 'bulk-plugins');
// Важливо: перевіримо чи це файл, який
// було зареєстровано у процесі хука видалення.
if ( __FILE__ != WP_UNINSTALL_PLUGIN )
return;
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
register_activation_hook( __FILE__, 'WCM_Setup_Demo_on_activation');
register_deactivation_hook( __FILE__, 'WCM_Setup_Demo_on_deactivation' );
register_uninstall_hook( __FILE__, 'WCM_Setup_Demo_on_uninstall' );#3 Архітектура для OOП (PHP класи)
Якщо плагін написаний у вигляді класу PHP, то функції потрібно підключати так:
<?php
defined( 'ABSPATH' ) OR exit;
/**
* Plugin Name: (WCM) Activate/Deactivate/Uninstall - CLASS
* Description: Додаток Plug-in до show activation/deactivation/uninstall callbacks for classes/objects.
* Autor: Franz Josef Kaiser/wecodemore
* Author URL: http://unserkaiser.com
* Plugin URL: http://wordpress.stackexchange.com/questions/25910/uninstall-activate-deactivate-a-plugin-typical-features-how-to/25979#25979
*/
register_activation_hook( __FILE__, array( 'WCM_Setup_Demo_Class', 'on_activation' ) );
register_deactivation_hook( __FILE__, array( 'WCM_Setup_Demo_Class', 'on_deactivation' ) );
register_uninstall_hook( __FILE__, array( 'WCM_Setup_Demo_Class', 'on_uninstall' ) );
add_action( 'plugins_loaded', array( 'WCM_Setup_Demo_Class', 'init' ) );
class WCM_Setup_Demo_Class
{
protected static $instance;
public static function init()
{
is_null( self::$instance ) AND self::$instance = new self;
return self::$instance;
}
public static function on_activation()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
$plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
check_admin_referer("activate-plugin_{$plugin}");
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
public static function on_deactivation()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
$plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
check_admin_referer( "deactivate-plugin_{$plugin}");
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
public static function on_uninstall()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
check_admin_referer( 'bulk-plugins');
// Важливо: перевіримо чи це файл, який
// було зареєстровано під час видалення плагіна.
if ( __FILE__ != WP_UNINSTALL_PLUGIN )
return;
// Розкоментуйте цей рядок, щоб побачити функцію в дії
// exit (var_dump ($_GET));
}
public function __construct()
{
// Запуск плагіна: додайте хуки на потрібні функції
}
}
список змін
| З версії 2.0.0 | Введено. |
Код register_deactivation_hook() register deactivation hook WP 6.0.2
function register_deactivation_hook( $file, $callback ) {
$ file = plugin_basename ($ file);
add_action( 'deactivate_' . $file, $callback );
}