Темы не предназначены для того, чтобы быть функциональными, но, как разработчикам тем, мы в основном должны включать некоторые функции, чтобы сделать нашу тему немного лучше, и функцию, вы знаете, функциональную.
В этом уроке мы познакомимся с термином «территория плагина» и научимся использовать фантастический инструмент, написанный Томасом Гриффином: библиотеку активации плагинов 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.php
require_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 предлагает действительно умный способ воспроизвести его по книге.
Что вы думаете об этом инструменте? Вы когда-либо использовали это или планируете использовать это в будущем? Скажите нам, что вы думаете, комментируя ниже. И если вам понравилась эта статья, не забудьте поделиться ею с друзьями!