Темы не предназначены для того, чтобы быть функциональными, но, как разработчикам тем, мы в основном должны включать некоторые функции, чтобы сделать нашу тему немного лучше, и функцию, вы знаете, функциональную.
В этом уроке мы познакомимся с термином «территория плагина» и научимся использовать фантастический инструмент, написанный Томасом Гриффином: библиотеку активации плагинов TGM.
Функциональность темы: вторжение в плагин
Темы предназначены для изменения дизайна вашего сайта WordPress. В идеале это должно быть визуально . Но в этот золотой век WordPress разработчики тем часто включают функциональные функции в свои темы, чтобы оставаться конкурентоспособными на рынке. Это должно было быть, но это так.
Это вторжение на территорию плагина . Мы можем определить «территорию плагина» в простых терминах: функциональные части кода находятся внутри границ этой территории. Каждый кусочек кода, который изменяет функциональность вашего сайта, должен служить плагином, если он еще не был добавлен в ядро WordPress.
В одном из моих предыдущих постов (в серии « Создание идеальной темы WordPress ») я упомянул эмпирическое правило «территории плагинов»:
Если функция касается внешнего вида веб-сайта, она должна быть в теме, но если речь идет о функциональности веб-сайта, ее следует включить в качестве отдельного плагина.
Достаточно просто, правда?
Хотя люди все еще склонны жестко кодировать функциональные фрагменты в своих темах, каталоги тем (такие как WordPress.org и ThemeForest) не принимают темы, вторгающиеся в «территорию плагина». Таким образом, стало проблемой предложить функциональность с темами.
К счастью, есть довольно простое решение, и оно не противоречит правилу «территории плагинов».
Представляем библиотеку активации плагинов TGM
Активация плагинов TGM — это легковесная библиотека с целью объединения тем с плагинами. Идея проста: когда пользователь устанавливает вашу тему, он заставляет пользователя устанавливать плагины с WordPress.org, внешнего веб-сайта или папки темы. Вот что Томас Гриффин, создатель библиотеки, определяет этот удобный инструмент:
Активация плагинов TGM — это библиотека PHP, которая позволяет вам легко запрашивать или рекомендовать плагины для ваших тем WordPress (и плагинов). Он позволяет вашим пользователям устанавливать и даже автоматически активировать плагины единичным или массовым способом, используя родные классы, функции и интерфейсы WordPress. Вы можете ссылаться на предварительно упакованные плагины, плагины из хранилища плагинов WordPress или даже на плагины, размещенные в других местах в Интернете.
Это, вероятно, самое разумное решение проблемы «вторжения на территорию плагина». И это тоже довольно легко применять.
Давайте посмотрим!
Установка активации плагина TGM
Установка Активации Плагинов TGM смехотворно проста. Просто следуйте этим шагам:
- Загрузите библиотеку активации плагинов TGM из раздела «Скачать» страницы.
- Откройте zip-файл и распакуйте
class-tgm-plugin-activation.phpв папку вашей темы (где угодно). - Откройте файл
functions.phpвашей темы и используйтеfunctions.phprequire_once()чтобы потребовать файл класса (один раз) в вашей теме. - Создайте функцию для настройки активации плагина TGM и подключите ее к
tgmpa_registerчерез функциюadd_action(). - Выполнено!
Это так просто, что вам даже не нужен сложный код PHP, чтобы требовать или рекомендовать плагины. Посмотрите на код ниже:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
/**
* Since I’m already doing a tutorial, I’m not going to include comments to
* this code, but if you want, you can check out the «example.php» file
* inside the ZIP you downloaded — it has a very detailed documentation.
*/
require_once dirname( __FILE__ ) .
add_action( ‘tgmpa_register’, ‘mytheme_require_plugins’ );
function mytheme_require_plugins() {
$plugins = array( /* The array to install plugins */ );
$config = array( /* The array to configure TGM Plugin Activation */ );
tgmpa( $plugins, $config );
}
?>
|
Теперь вы можете заставить своих пользователей устанавливать новые плагины, устанавливая переменную $plugins в только что созданной функции.
Посмотрим, как это делается.
Установка плагинов с активацией плагинов TGM
Как вы можете видеть выше, переменная $plugins является массивом. И чтобы определить плагины для установки, вам нужно создать массивы в этом массиве (чтобы вы могли устанавливать свои собственные параметры). Звучит сложно, но это не так:
|
01
02
03
04
05
06
07
08
09
10
11
|
<?php
$plugins = array(
array( /* my first plugin */ ),
array( /* my second plugin */ ),
array( /* my third plugin */ ),
// …
array( /* my nth plugin */ )
);
?>
|
Есть пара параметров для использования:
-
name(строка, обязательная) — название плагина. -
slug(строка, обязательная) — Slug плагина (обычно это имя его папки). -
required(логический, обязательный) — если задано значениеtrue, вашей теме будет «требоваться» плагин. Еслиfalse, тема будет «рекомендовать» это. -
source(строка, иногда требуется) — Источник плагина. Если это плагин WordPress.org, этот параметр не должен использоваться; иначе это требуется. -
version(строка, необязательно) — минимальная версия, необходимая для плагина. Например; если пользователь темы уже установил требуемый плагин, но не указал минимальный номер версии, который вы указали, активация плагина TGM предупреждает пользователя об обновлении. -
force_activation(булево, необязательное) — если установлено значениеtrue, пользователь не сможет деактивировать плагин, пока ваша тема активна. Немного раздражает, но это может быть необходимо в некоторых сценариях. -
force_deactivation(логическое, необязательное) — если установлено значениеtrue, плагин будет деактивирован, как только пользователь переключит темы. -
external_url(строка, необязательно) — если установлено, имя плагина будет связано с этим адресом в уведомлении о требовании плагина.
У вас есть три варианта, чтобы заставить ваших пользователей устанавливать плагины с активацией плагинов TGM: вам может потребоваться плагин из каталога плагинов WordPress , из внешнего источника (например, вашего собственного сервера или CDN) или из папки вашей темы (например, /my-theme/plugins/shortcodes.zip ).
Требуется плагин от WordPress.org
|
01
02
03
04
05
06
07
08
09
10
11
|
<?php
$plugins = array(
array(
‘name’ => ‘BuddyPress’,
‘slug’ => ‘buddypress’,
‘required’ => false, // this plugin is recommended
)
);
?>
|
Требуется плагин из внешнего источника
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<?php
$plugins = array(
array(
‘name’ => ‘My Awesome Plugin’,
‘slug’ => ‘my-awesome-plugin’,
‘source’ => ‘http://files.my-website.com/my-awesome-plugin.zip’,
‘required’ => true, // this plugin is required
‘external_url’ => ‘http://my-website.com/introducing-my-awesome-plugin’, // page of my plugin
‘force_deactivation’ => true, // deactivate this plugin when the user switches to another theme
)
);
?>
|
Требуется плагин из каталога тем
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<?php
$plugins = array(
array(
‘name’ => ‘My Super Sleek Slider’,
‘slug’ => ‘my-super-sleek-slider’,
‘source’ => get_stylesheet_directory() .
‘required’ => true, // this plugin is required
‘version’ => ‘1.2’, // the user must use version 1.2 (or higher) of this plugin
‘force_activation’ => false, // this plugin is going to stay activated unless the user switches to another theme
)
);
?>
|
Настройка активации плагина TGM
Обратите внимание на tgmpa() с двумя параметрами в конце нашего примера кода? Второй параметр — это переменная $config которая также является массивом, как и параметр $plugins . Как следует из названия, вы можете настроить библиотеку активации плагинов TGM с этим массивом. Он также имеет свой собственный набор опций, которые вам нужно установить:
-
id(строка) — уникальный идентификатор библиотеки активации плагинов TGM, который вы реализовали в своей теме . Это на самом деле очень важно: если другой плагин также использует активацию плагина TGM, различные идентификаторы предотвратят конфликты. -
default_path(строка) — абсолютный путь по умолчанию для плагинов в вашей теме. Когда вы устанавливаете это, вы можете просто использовать имя файла ZIP в качествеsourceпараметра для вашего плагина. -
menu(string) — Слаг меню для страницы установки плагина. -
has_notices(логическое значение) — если установлено значениеtrue, уведомления администратора отображаются для обязательных / рекомендуемых плагинов. -
dismissible(boolean) — если установлено значениеtrue, пользователь может «отклонить» уведомления. -
dismiss_msg(строка) — если для параметраdismiss_msgзадано значение false, это сообщение будет отображаться над уведомлением администратора. -
is_automatic(boolean) — если установлено значениеtrue, плагины будут активированы после того, как пользователь согласится их установить. -
message(string) — необязательный HTML для отображения перед таблицей плагинов. -
strings(массив) — еще одинarrayкоторый включает в себя сообщения для отображения. Вы также можете установить их как переводимые строки. Проверьте файлexample.phpчтобы увидеть полный список строк сообщений.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<?php
$config = array(
‘id’ => ‘mytheme-tgmpa’, // your unique TGMPA ID
‘default_path’ => get_stylesheet_directory() .
‘menu’ => ‘mytheme-install-required-plugins’, // menu slug
‘has_notices’ => true, // Show admin notices
‘dismissable’ => false, // the notices are NOT dismissable
‘dismiss_msg’ => ‘I really, really need you to install these plugins, okay?’, // this message will be output at top of nag
‘is_automatic’ => true, // automatically activate plugins after installation
‘message’ => ‘<!—Hey there.—>’, // message to output right before the plugins table
‘strings’ => array();
);
?>
|
Заворачивая все
Как вы можете видеть, совсем не невозможно предложить функциональность темам WordPress — нужно просто думать о пользователях, когда они переключаются с вашей темы на другую. Библиотека активации плагинов TGM предлагает действительно умный способ воспроизвести его по книге.
Что вы думаете об этом инструменте? Вы когда-либо использовали это или планируете использовать это в будущем? Скажите нам, что вы думаете, комментируя ниже. И если вам понравилась эта статья, не забудьте поделиться ею с друзьями!