Как отключать Jetpack модули на уровне профи

Дата публикации:Октябрь 25, 2015

Jetpack – один из тех плагинов, который является нелюбимым у многих людей. Давайте будем предельно честны, он действительно переполнен разным функционалом. У него есть масса опций и гора функций, которые, по моему мнению, было бы лучше вынести в отдельные плагины. Однако при этом существуют некоторые действительно полезные аспекты использования Jetpack. Я сам прибегаю к этому плагину достаточно часто.

Engine start stop button of a car

Мы используем Jetpack на нашем сайте WP Site Care, поскольку он является лучшим WordPress-плагином для социального шаринга среди всех решений, протестированных нами до недавнего времени. Он очень быстро работает, его можно легко стилизовать, он не замедляет загрузку записей и страниц.

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

Единственное, что, как мне показалось, отсутствовало в посте – это список модулей, которые в данный момент доступны в Jetpack, поэтому я решил немного «поломать» Jetpack и самостоятельно получить этот список. Чтобы следовать за этой записью, вам нужно будет, естественно, для начала скачать и установить Jetpack. Сделать это вы можете на экране добавления нового плагина в WordPress.

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

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

disable-jetpack

Как только вы отключите модули, которые вы хотите скрыть, вам останется лишь добавить следующий код к вашему плагину или файлу functions.php темы, и у вас будет прекрасный фундамент для удаления любого Jetpack-модуля, который вы не хотите загружать на своем сайте.

<?php
add_filter( 'jetpack_get_available_modules', 'prefix_hide_jetpack_modules' );
/**
* Disable all non-whitelisted jetpack modules.
*
* As it's written, this will allow all of the currently available Jetpack
* modules to work display and be activated normally.
*
* If there's a module you'd like to disable, simply comment it out or remove it
* from the whitelist and it will no longer be available for activation.
*
* @author WP Site Care
* @link   http://www.wpsitecare.com/disable-jetpack-modules/
* @param  array $modules the existing list of Jetpack modules
* @return array $modules the amended list of Jetpack modules
*/
function prefix_hide_jetpack_modules( $modules ) {
	// A list of Jetpack modules which are allowed to activate.
	$whitelist = array(
		'after-the-deadline',
		'carousel',
		'comments',
		'contact-form',
		'custom-content-types',
		'custom-css',
		'enhanced-distribution',
		'gravatar-hovercards',
		'infinite-scroll',
		'json-api',
		'latex',
		'likes',
		'manage',
		'markdown',
		'minileven',
		'monitor',
		'notes',
		'omnisearch',
		'photon',
		'post-by-email',
		'protect',
		'publicize',
		'related-posts',
		'sharedaddy',
		'shortcodes',
		'shortlinks',
		'site-icon',
		'sso',
		'stats',
		'subscriptions',
		'tiled-gallery',
		'vaultpress',
		'verification-tools',
		'videopress',
		'widget-visibility',
		'widgets',
	);
	return array_intersect_key( $modules, array_flip( $whitelist ) );
}

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

Нужно также отметить, что этот код отключит любые новые модули, которые будут добавлены к Jetpack. Если они не будут присутствовать в белом списке, то в таком случае их нельзя будет активировать или деактивировать.

Управляйте Jetpack с помощью плагинов

Вы можете также установить следующий великолепный плагин от Марка Джекита. Он несколько устарел, однако он по-прежнему отлично работает. В основном этот плагин перемещает меню верхнего уровня ближе к нижней части сайдбара панели администратора. Сначала контент, а потом уже настройки!

Еще один плагин, связанный с Jetpack, который позволяет получить больше контроля над загрузкой Jetpack модулей – Rocketeer. Согласно автору плагина, Брэди Веркеру, Rocketeer позволяет вам управлять модулями Jetpack точно так же, как вы делаете это с плагинами. Базовые возможности плагина включают в себя сортировку и массовую активацию/деактивацию модулей Jetpack. Скачайте его и протестируйте!

Источник: http://www.wpsitecare.com

Поделиться

4 комментария

  1. BaNru says:

    Финал статьи вообще великолепен «плагин, чтобы отключить плагин».
    Где-то тут я такое уже писал с год назад.

    • Дмитрий says:

      Да, было такое :)

      Звучит парадоксально, конечно, но порой это необходимо.

  2. Не проще ли «если так понадобилось» — выделить эту функцию в отдельный плагин? Так чтобы не нарушить права авторов — взять саму идею.
    А то получается — «купили автомобиль зимой — чтобы слушать музыку, но без обогрева и без езды»

  3. Здравствуйте, после активации плагина внизу страницы появились кружочки ведущие на логаут и сброс пароля — где их отключить? А то ***** искать…

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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