Часто при написании дополнительного функционала для сайта мы используем плагины, чтобы ускорить разработку. Кто создаёт сайты на заказ наверняка сталкивались с ситуацией, когда слишком додельный и любопытный заказчик отключал нужный плагин и сайт лишался нужного функционала или просто переставал работать.
Чтобы избавиться от проблем такого рода, можно просто убрать кнопку «деактивировать» у плагинов, которые обязательно нужны для работы сайта.
На скриншоте показано:
-
Как отсутствует кнопка «деактивировать» у плагинов: Advanced Custom Fields PRO, Contact Form 7 и Kama Thumbnail.
- Как у всех плагинов убрана кнопка «Изменить». Эту кнопку еще можно убрать определив константу DISALLOW_FILE_EDIT, тем самым вообще запретив редактирование файлов.
Делается всё это просто, через хук plugin_action_links:
add_filter( 'plugin_action_links', 'disable_plugin_deactivation', 10, 2 ); function disable_plugin_deactivation( $actions, $plugin_file ) { // Удаляет действие "Редактировать" у всех плагинов unset( $actions'edit' ); // Удаляет действие "Деактивировать" у важных для сайта плагинов $important_plugins = array( 'advanced-custom-fields-pro/acf.php', 'kama-thumbnail/kama_thumbnail.php', 'contact-form-7/wp-contact-form-7.php', ); if ( in_array( $plugin_file, $important_plugins ) ) { unset( $actions'deactivate' ); } return $actions; }
Кстати, обратите внимание, что для unset() не нужно проверять наличие ключа в массиве. При отсутствии ключа, ошибку уровня PHP notice мы не увидим! Это особенность такая у
unset().
Таким образом, из массива всех ссылок, которые должны быть выведены, мы убрали ссылку на редактирование плагина и на его деактивацию. Для лучшего понимания, взглянем на содержание переменных передаваемых в хук.
-
$actions — массив ссылок:
Array ( 0 => <a href="http://skinali.dev/wp-admin/admin.php?page=wpcf7">Настройки</a> deactivate => <a href="plugins.php?action=deactivate&plugin=contact-form-7%2Fwp-contact-form-7.php&plugin_status=active&paged=1&s&_wpnonce=5fe6035ae5" aria-label="Деактивировать Contact Form 7">Деактивировать</a> edit => <a href="plugin-editor.php?file=contact-form-7%2Fwp-contact-form-7.php" class="edit" aria-label="Изменить Contact Form 7">Изменить</a> )
-
$plugin_file — путь к основному файлу плагина в формате
папка-плагина/имя-файла, т.е. от папки плагинов.
contact-form-7/wp-contact-form-7.php
Достаточно простой способ получить такой путь — скопировать его из атрибута
data-plugin, открыв исходный код страницы:
Измените список важных плагинов в переменной $important_plugins и забудьте о лишних проблемах от заказчика.
WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.