# register_uninstall_hook()

URL: https://chugunov.pro/api-wordpress/functions/register_uninstall_hook/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.7.0.

## Сигнатура

```php
register_uninstall_hook( string $file, callable $callback )
```

## Описание

Регистрирует хук удаления, который будет вызван, когда пользователь нажмёт ссылку удаления, предписывающую плагину удалить самого себя. Ссылка не будет активной, пока плагин не привяжется к этому действию.
При регистрации хука удаления плагин не должен выполнять произвольный код вне функций. Чтобы запуститься через хук, плагин будет подключён, а значит, любой код, находящийся вне функций, выполнится в процессе удаления. Плагин не должен мешать процессу удаления.
Если плагин невозможно написать без выполнения кода внутри него, то плагин должен создать файл с именем «uninstall.php» в своей базовой папке. Этот файл, если он существует, будет вызван в процессе удаления в обход хука удаления. Используя «uninstall.php», плагин всегда должен проверять наличие константы «WP_UNINSTALL_PLUGIN» перед выполнением.

## Параметры

- `$file` `string` — обязательный. Файл плагина.
- `$callback` `callable` — обязательный. Функция обратного вызова, запускаемая при вызове хука. Должна быть статическим методом или функцией.

## Исходный код

Файл: `wp-includes/plugin.php:933`

```php
function register_uninstall_hook( $file, $callback ) {
	if ( is_array( $callback ) && is_object( $callback[0] ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Only a static class method or function can be used in an uninstall hook.' ), '3.1.0' );
		return;
	}

	/*
	 * The option should not be autoloaded, because it is not needed in most
	 * cases. Emphasis should be put on using the 'uninstall.php' way of
	 * uninstalling the plugin.
	 */
	$uninstallable_plugins = (array) get_option( 'uninstall_plugins' );
	$plugin_basename       = plugin_basename( $file );

	if ( ! isset( $uninstallable_plugins[ $plugin_basename ] ) || $uninstallable_plugins[ $plugin_basename ] !== $callback ) {
		$uninstallable_plugins[ $plugin_basename ] = $callback;
		update_option( 'uninstall_plugins', $uninstallable_plugins );
	}
}
```

## История изменений

- 2.7.0 — Introduced.

## Связанные

Использует: [`plugin_basename`](https://chugunov.pro/api-wordpress/functions/plugin_basename/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`_doing_it_wrong`](https://chugunov.pro/api-wordpress/functions/_doing_it_wrong/), [`update_option`](https://chugunov.pro/api-wordpress/functions/update_option/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/register_uninstall_hook/
