Хук деактивации иногда путают с хуком деинсталляции (удаления), однако это совсем разные хуки, они работают по-разному и сфера их применения тоже разная. При удалении обычно удаляются все данные плагина, включая опции, таблицы в БД и т.д. О деинсталляции все данные удаляются, процедура включения хука другая о ней мы еще поговорим.

Чтобы вызвать PHP функцию при активации, используйте register_activation_hook() в основном файле плагина:

register_activation_hook( __FILE__, ‘myplugin_activation’ );

Чтобы вызвать PHP функцию при деактивации используйте register_deactivation_hook(), также в основном файле плагина:

register_deactivation_hook( __FILE__, ‘myplugin_function_to_run’ );

Первый параметр в каждой функции — это путь к основному файлу плагина — это файл с заголовками плагина.

Как правило, эти функции вызываются в основном файле плагина. Если функции помещаются в другой файл, то необходимо изменить первый параметр, указав в нем путь до основного файла плагина. Это можно сделать предварительно сохранив путь, например, в константу.

Как установить Skse 64 и его плагины в Скайриме SE/AE

Как работает активация

Плагин активируется функцией activate_plugin(), в которой срабатывает хук activate_(plugin).

Функция activate_plugin() в ядре вызывается уже после загрузки среды ВП. Эта функция подключает главный файл плагина (и все что в нем указано), а затем через хук активирует указанную callback-функцию. За счет этого в нашей callback-функции доступны все функции и классы плагина. Но, так как все основные хуки WP уже сработали во время загрузки среды ВП, то никакие события плагина повешенные на хуки, например plugins_loaded , уже не сработают при подключении главного файла плагина. А значит наш плагин будет подключен, но не полностью: не так как он должен подключаться, когда уже активирован.

Так, например, если плагин делает что-либо во время события plugins_loaded , то все эти действия просто не произойдут при активации плагина. Например, если он подключает файл перевода, то файл перевода не будет подключен в момент срабатывания callback-функции указанной для register_activation_hook() .

Как правило, после срабатывания callback-функции есть 2 события на которые можно повесить функции: activated_plugin и shutdown.

Чтобы сделать что-то неординарное при активации плагина, смотрите пример 5.

Пример активации плагина

Одним из распространенных случаев для хука активации — это обновление настроек ЧПУ WordPress с помощью flush_rewrite_rules(), когда плагин регистрирует произвольный тип записи. Это позволяет избавиться от неприятных ошибок 404. Давайте посмотрим на примере:

add_action( ‘init’, ‘myplugin_setup_post_type’ ); function myplugin_setup_post_type() < // Регистрируем тип записи «book» register_post_type(‘book’, array( ‘public’ =>’true’ ) ); > register_activation_hook( __FILE__, ‘myplugin_install’ ); function myplugin_install()< // Запускаем функцию регистрации типа записи myplugin_setup_post_types(); // Сбрасываем настройки ЧПУ, чтобы они пересоздались с новыми данными flush_rewrite_rules(); >

Читайте также:  Где тайник в резиденции Скайрим

Если вы не знакомы с регистрацией произвольных типов записей, то прочитайте описание функции register_post_type().

SKyrim Special Edition — Установка Модов

Активация плагина для сети Мультисайт

Довольно часто при активации плагина нужно что-либо добавить в БД сайта. Но в таком случае активация плагина для сети сайтов сводится к тому, что нужно сделать одно и тоже для всех сайтов сети. Автоматически register_activation_hook() этого не делает.

Поэтому для сети сайтов вам нужно будет при активации плагина пройтись по всем сайтам сети и сделать с каждым сайтом, то что надо сделать при активации:

register_activation_hook( __FILE__, ‘my_plugin_activate’ ); function my_plugin_activate( $network_wide )< // require_once ABSPATH . ‘wp-admin/includes/upgrade.php’; if( is_multisite() $network_wide )< global $wpdb; foreach( $wpdb->get_col(«SELECT blog_id FROM $wpdb->blogs») as $blog_id ) < switch_to_blog($blog_id); _activate_plugin_for_site(); restore_current_blog(); >> else < _activate_plugin_for_site(); >> function _activate_plugin_for_site() < // код активации для каждого сайта >

Также нужно учесть, что при создании очередного сайта сети его тоже нужно обработать. Для этого проводим процедуру активации плагина при создании сайта сети:

add_action( ‘wp_initialize_site’, ‘my_plugin_new_blog’, 10, 2 ); function my_plugin_new_blog( $new_site, $args )< // замените на базовое имя вашего плагина. Пр.: dirname/filename.php if( is_plugin_active_for_network( ‘my-plugin-dir/my-plugin-name.php’ ) ) < switch_to_blog( $new_site->site_id ); // тут делаем что нужно при активации. restore_current_blog(); > >

Если нужен такой функционал для всех плагинов, которые активируются сетью (а не только для того который вы разрабатываете), обратите внимание на плагин Proper Network Activation. Он делает так, что register_activation_hook и register_deactivation_hook будут запущены для каждого сайта сети в контексте этого сайта.

Пример деактивации плагина

Теперь при деактивации нам нужно опять сбросить правила ЧПУ, потому что при деактивации наш тип записи будет удален. Т.е. это обратный процесс тому, что был выше при активации:

register_deactivation_hook( __FILE__, ‘myplugin_deactivation’ ); function myplugin_deactivation() < // Тип записи не регистрируется, а значит он автоматически удаляется — его не нужно удалять как-то еще. // Сбрасываем настройки ЧПУ, чтобы они пересоздались с новыми данными flush_rewrite_rules(); >

Больше примеров, как правильно использовать функции активации/деактивации смотрите в описании этих функций:

  • register_activation_hook()
  • register_deactivation_hook()

Функция удаления плагина

Кроме активации и деактивации, важным моментом является удаление плагина. Подключится к этому процессу можно через функцию

  • register_uninstall_hook() — нужна при удалении плагина.

Подробнее о том как правильно удалять плагины читайте в специальной статье.

Читайте также:  Skyrim лучшие моды на крафт

Источник: wp-kama.ru

Автоматическая активация и деактивация плагинов в WordPress через функцию в PHP-коде

Информацию о том, какие плагины включены, а какие нет, WordPress хранит в таблице wp_options, в массиве active_plugins, так что всё, что нам потребуется, это изменить его содержимое .

Функция активации плагинов

Вставляем этот код в functions.php и функция включает все плагины (установленные конечно же), которые перечислены в ней.

function true_plugins_activate() { if ( $active_plugins = get_option(‘active_plugins’) ) { // вытаскиваем массив с активными плагинами $activate_this = array( // в массиве перечисляем плагины которые хотим включить, путь к файлу плагина относительно папки plugins, о том как его узнать, написано ниже ‘hello.php’, // например Hello Dolly ‘wp-pagenavi/wp-pagenavi.php’ // и плагин списка страниц ); foreach ( $activate_this as $plugin ) { if ( ! in_array( $plugin, $active_plugins ) ) { array_push( $active_plugins, $plugin ); update_option( ‘active_plugins’, $active_plugins ); } } } } add_action( ‘admin_init’, ‘true_plugins_activate’, 10 );

Кстати, использование этого кода предотвращает возможность деактивации плагинов пользователем, как бы он ни пытался их отключить, плагины будут сразу же включаться снова.

Функция отключения плагинов

Этот пример попроще предыдущего, потому что не надо каждый раз делать проверку на наличие элемента в массиве, то есть проверку на то, активирован ли уже плагин или нет.

function true_plugins_deactivate() { if ( $active_plugins = get_option(‘active_plugins’) ) { $deactivate_this = array( // в массиве перечисляем плагины которые хотим деактивировать ‘akismet/akismet.php’ // например этот плагин от спама ); $active_plugins = array_diff( $active_plugins, $deactivate_this ); update_option( ‘active_plugins’, $active_plugins ); } } add_action( ‘admin_init’, ‘true_plugins_deactivate’, 20 );

Теперь плагин Akismet будет невозможно включить через админку 🙂

Небольшой сниппет, который позволит вывести путь к файлу плагина прямо в админке под описанием к каждому плагину

Вот что в итоге получится:

выводим путь к файлу плагина прямо в админке под описанием к каждому плагину

А вот сам сниппет, вставляемый в functions.php:

function true_echo_plugin_path( $plugin_meta, $plugin_file, $plugin_data, $status ) { echo » . $plugin_file . ‘
‘; return $plugin_meta; } add_filter( ‘plugin_row_meta’, ‘true_echo_plugin_path’, 10, 4 );

Конечно же, узнать путь можно и по FTP.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Источник: misha.agency

Как активировать плагин

Плагины значительно расширяют возможности современных платформ для создания сайтов. Но помимо поиска и загрузки нужного плагина, его необходимо установить, а также активировать через административную панель.

Как активировать плагин

Статьи по теме:

  • Как активировать плагин
  • Как включить плагин в Опере
  • Как включить плагины в браузере mozilla firefox

Вам понадобится

  • — собственный сайт;
  • — платформа Joomla.
Читайте также:  Скайрим где найти жену красивую

Инструкция

Вам необходимо определиться с назначением плагина, а исходя из этого выбирать нужное дополнение. Поиск дополнений лучше производить через административную панель вашего сайта либо на специализированных сайтах, которых сейчас бессметное количество.

После выбора плагина нужно щелкнуть на ссылку загрузки и сохранить приложение на своем компьютере. При установке через личный сайт достаточно знать всего лишь интернет-адрес объекта (url). Для получения ссылки нажмите правой кнопкой мыши на объекте и выберите пункт «Скопировать адрес».

Затем следует перейти в административную панель в раздел «Расширения» и выбрать опцию «Установить либо удалить». Перейдите к пустому полю «Загрузить файл пакета» и нажмите кнопку «Обзор». В открывшемся окне вам необходимо указать путь до архива, который был недавно скачан. Нажмите клавишу Enter, чтобы подтвердить свой выбор. Если архива у вас нет, но есть ссылка на него, вставьте ее в поле «Установить из url».

После нажатия на кнопку «Установить» произойдет инсталляция нового дополнения. Теперь он функционирует, но работает не полностью. С чем это связано? Его необходимо активировать, чтобы задейстWowать работу всех функций. Откройте раздел «Расширения и щелкните мышью по значку «Менеджер плагинов».

На загрузившейся странице найдите название дополнения. В этой строке есть небольшое поле, которое необходимо отметить. Этот пункт начнет полностью функционировать только после его выделения и нажатии кнопки «Включить».

Плагин был активирован, но еще не настроен, поэтому смело нажимайте на одноименную кнопку и приступайте к тонкой настройке текущего дополнения. Не забывайте, что работу активированного плагина можно проверить только на одной из страниц запущенного сайта, а не в административной панели.

Видео по теме
Совет полезен?
Статьи по теме:

  • Как включить на сервере плагины
  • Как установить плагин
  • Как ставить плагины

Добавить комментарий к статье
Похожие советы

  • Как использовать плагин Joomla
  • Как добавить плагин в Фотошоп
  • Как установить плагин по-русски
  • Как установить модуль на сайт
  • Как установить плагины вручную
  • Как запустить плагин
  • Как установить расширение firefox
  • Как поставить плагины на сервер
  • Как установить плагин на сервер
  • Как включить плагины в КС
  • Зачем нужны «плагины»
  • Как загрузить плагины в Оперу
  • Как поставить плагин
  • Как подключать плагины
  • Как использовать плагин
  • Как включить надстройки в Эксплорере
  • Как устанавливать плагин в фотошоп
  • Как установить расширения joomla
  • Как вставлять плагины
  • Как добавить модуль на сайт
  • Как добавить плагин в total commander
  • Как установить плагин в Lightroom
  • Как использовать плагины для фотошопа
  • Как установить плагин для тв

Источник: www.kakprosto.ru