register_deactivation_hook() WP 2.0.0

Реєструє функцію, яка запускатиметься після деактивації плагіна.

Вішає вказану в другому параметрі функцію подію, назва якої залежить від параметра $file : deactivate_$file.

Хуків немає.

Повертає

null. Нічого не вертає.

Використання

register_deactivation_hook($file, $function);
$file
(рядок) (обов’язковий)
Шлях до головного файлу плагіна у рубриці
wp-content/plugins. Можна вказати повний шлях. Зазвичай використовується магічна константа __FILE__.
$function
(рядок/масив) (обов’язковий)
Назва функції зворотного виклику (callback), яка запускатиметься при деактивації плагіна.

Приклади

0

#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() під час деактивації плагіна.

0

#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' );
0

#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() WP 6.0.2

function register_deactivation_hook( $file, $callback ) {
	$ file = plugin_basename ($ file);
	add_action( 'deactivate_' . $file, $callback );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *