Как отключить деактивацию плагинов в панели администратора WordPress

Как отключить деактивацию плагинов в панели администратора WordPress

Одна из самых выгодных сторон WordPress, это, безусловно, работа с плагинами. С помощью плагинов можно быстро выполнить любую задачу как в лице разработчика, так и в лице рядового пользователя. Зачастую при создании клиентских сайтов мы как разработчики используем крайне важные для сайта плагины, позволяющие подключить определенную функциональность. Недавно наша команда столкнулась с серьезной проблемой: один из сайтов клиента перестал работать. Сайдбар не хотел грузиться полностью, на страницах с отдельными записями были пропущены некоторые элементы. В итоге мы выяснили, что один из новых сотрудников, который был поверхностно знаком с WordPress, деактивировал некоторые из плагинов, которые требовались для того, чтобы сайт функционировал должным образом. Мы вошли в систему и активировали те плагины, которые были отключены – проблема тем самым была решена, однако не был решен вопрос: как обезопасить себя от появления таких ситуаций в дальнейшем? В этой статье мы покажем вам, как отключить деактивацию плагинов в панели управления WordPress (только для определенных плагинов).

Теоретически вы можете воспользоваться плагином Members для создания новой пользовательской роли. Однако клиент, который работал с нами, отказался идти по этому маршруту. Он нанимал специального сотрудника для того, чтобы тот работал с блогом и средствами социального общения, таким образом, ограничение доступа – не самый подходящий вариант. Клиент хотел, чтобы этот сотрудник мог активировать/деактивировать плагины по своему усмотрению. Мы должны были найти путь, чтобы одновременно угодить клиенту и защитить себя от повторения такой истории в будущем. Благодаря Стиву Тейлору мы нашли фрагмент кода, который позволяет удалить ссылку “Деактивировать” для указанных плагинов. Также этот код удаляет ссылку “Редактировать” для всех плагинов, поскольку мы не хотим, чтобы наш клиент мог изменять файлы плагинов через редактор.

Таким образом, все, что нам понадобилось сделать, это вставить следующий код в файл functions.php:

add_filter( 'plugin_action_links', 'disable_plugin_deactivation', 10, 4 );
function disable_plugin_deactivation( $actions, $plugin_file, $plugin_data, $context ) {
	// Remove edit link for all
	if ( array_key_exists( 'edit', $actions ) )
		unset( $actions['edit'] );
	// Remove deactivate link for crucial plugins
	if ( array_key_exists( 'deactivate', $actions ) && in_array( $plugin_file, array(
		'facebook-open-graph-meta-in-wordpress/fbogmeta.php',
		'wp-pagenavi/wp-pagenavi.php'
	)))
		unset( $actions['deactivate'] );
	return $actions;
}

Теперь вы должны изменить массив $plugin_file, в котором содержится список определенных плагинов. Путь к файлу является относительным: /wp-content/plugins/. В примере, приведенном выше, строка ‘facebook-open-graph-meta-in-wordpress/fbogmeta.php’ указывает на файл, расположенный в папке facebook-open-graph-meta-in-wordpress, находящийсяв папке с плагинами. Вы можете добавить к списку любое число плагинов.

Указанный прием называется созданием шортката; по факту он не предотвращает физическую деактивацию. Мы всего лишь скрыли ссылку “Деактивировать”. Любой человек, обладающий достаточными знаниями WordPress, легко может вызвать деактивирующий URL. С другой стороны, клиент может быть продвинутым в плане ведения сайтов, так что он всегда может удалить плагины через FTP.

Вы работаете над темой, которая требует наличия определенного функционала для корректной работы? Тогда приведенный выше код – для вас!

http://www.wpbeginner.com/wp-tutorials/how-to-disable-plugin-deactivation-from-wordpress-admin-panel/

Сохранено из oddstyle.ru

Добавить комментарий

%d такие блоггеры, как: