Ядро WordPress полно функций, однако иногда этого недостаточно, и нам нужно больше. Это может быть достигнуто благодаря плагинам, а иногда темы могут даже добавлять функции. Однако как мы можем решить, должна ли функция быть плагином или темой?
Ответ на этот вопрос может быть сложным: он не всегда прост. Если функция должна появиться в теме, или, наоборот, если она может остаться неиспользованной, не нарушая тему, то вы легко знаете, где ее следует реализовать.
Что, если функция должна быть там постоянно? Независимо от вашей текущей темы, эта функция может быть настолько важной, что ее нельзя деактивировать, и ей не место в классической системе плагинов. Для этих специальных функций могут использоваться плагины Must-Use .
Что такое плагин Must-Use?
Плагин, который необходимо использовать (также называемый «mu-plugin») — это плагин, который всегда будет активирован по умолчанию , без необходимости делать это самостоятельно. Чтобы активировать mu-плагин, вам просто нужно загрузить его в нужную директорию, и WordPress автоматически узнает, что этот плагин необходимо использовать. Более того, плагин mu не может быть деактивирован : он всегда будет выполняться, если только он не удален.
Изначально mu-плагины были доступны только для WPMU, для тех сайтов, которые использовали несколько (мультисайтовых) блогов. Тогда mu-плагин был просто плагином, активированным для всех блогов.
Теперь, начиная с версии 2.8, эта функция находится в основной ветке WordPress, а часть «MU» в mu-plugins имеет новое значение: из «multi-user» она стала «must-use» и использование этого функция была изменена.
Вопрос не в том, должна ли эта функция появляться во всех моих блогах? «больше, а скорее» , настолько ли важна эта функция, что ее можно рассматривать как расширение WordPress? ».
Обязательные плагины позволяют пользователям добавлять функции, которые по умолчанию отсутствуют в ядре WordPress, но которые необходимы пользователям.
Обязательные для использования плагины также можно рассматривать как функции, которые не имеют места в теме или классическом плагине. Например, как мы рассказывали в предыдущей статье SitePoint об обновлении WordPress, плагинов и тем , мы можем включить автоматическое обновление плагинов и тем благодаря некоторым специальным фильтрам. Добавление этих фильтров в другой плагин не имеет смысла, а тем более — в тему. Включение автоматических обновлений — прекрасный пример функций, для которых полезны mu-плагины.
Каковы особенности плагина Must-Use?
Главная особенность mu-плагина в том, что он активирован по умолчанию. Все, что вам нужно сделать, это загрузить файл в каталог mu-plugins (мы увидим, где это найти ниже). Затем плагин автоматически активируется, вам не нужно входить в систему, чтобы сделать это самостоятельно: как только файл окажется в нужном месте, WordPress всегда выполнит его.
Кроме того, му-плагин не может быть деактивирован на странице Plugins
Таким образом, никто не может случайно деактивировать необходимую функцию.
Поскольку они не активированы, mu-плагины не могут использовать ловушки активации, которые обычно используются классическими плагинами для инициализации некоторых необходимых вещей, таких как опции в базе данных. Непосредственным следствием этого является то, что если вам нужны ловушки активации, вы не сможете использовать mu-плагины для нужной вам функции.
Должные к использованию плагины загружаются перед классическими плагинами в алфавитном порядке. Может быть полезно узнать, есть ли ваш mu-плагин для загрузки библиотеки, используемой на всех страницах вашего сайта, например: если классический плагин использует эту библиотеку, вы можете быть уверены, что он уже загружен, потому что mu-плагины загружены ранее, и они не могут быть деактивированы.
Как создать плагин Must-Use?
Как вы увидите ниже, плагин, который необходимо использовать, не слишком отличается от классического, но есть некоторые вещи, которые необходимо знать. Цель этого раздела — узнать, как создать mu-плагин, где его разместить и как узнать, какие mu-плагины в настоящее время используются вашим сайтом.
Каталог плагинов Must-Use
Плагин mu похож на классический плагин, за исключением того, что он хранится не в каталоге plugins
wp-content
mu-plugins
Если вы никогда ранее не использовали mu-plugins, этот каталог не должен существовать, но вы можете создать его без проблем.
Обратите внимание, что каталог, в котором вы будете хранить ваши плагины mu, — это /wp-content/mu-plugins
wp-config.php
WPMU_PLUGIN_DIR
WPMU_PLUGIN_URL
define('WPMU_PLUGIN_DIR', '/full/path/to/the/new/directory');
define('WPMU_PLUGIN_URL', 'http://URL/to/the/new/directory');
Будьте осторожны: если вы определите эти две константы, WordPress не переопределит их, поэтому, если путь неверен, плагины mu не будут загружены. Более того, в файле wp-config.php
wp-settings.php
WP_CONTENT_DIR
Если вы не уверены в своем каталоге, вы должны оставить значения по умолчанию для WPMU_PLUGIN_DIR
WPMU_PLUGIN_URL
Наш первый обязательный плагин
По сути, mu-плагин — это файл PHP, так же как и классический плагин. Теперь мы создадим очень простой му-плагин. Он будет отображать «Hello World!» сообщение, так что это будет довольно тривиально, но таким образом мы сможем увидеть, работает ли он сразу после его создания.
Создайте новый файл в каталоге /wp-content/mu-plugins
Вы можете дать ему любое имя, какое пожелаете, но hello-world.php
Заполните его следующей функцией.
function displayHelloWorld() {
echo '<p style="position: absolute; top: 150px; right: 0; padding: 10px; background-color: #0096FF; color: #FFFFFF;">Hello World!</p>';
}
Эта функция будет отображать абзац, содержащий текст «Hello World!» и поместите его в верхний правый угол экрана: таким образом, мы можем легко увидеть это. Теперь вы должны вызвать эту функцию.
Это тест, но он не является оправданием для грязной: мы можем вызвать нашу функцию через действие, например, wp_footer
Добавьте следующую строку после вышеуказанной функции.
add_action('wp_footer', 'displayHelloWorld');
Теперь посетите ваш блог. Если вы ничего не изменили в приведенном выше коде, вы должны увидеть в правом верхнем углу синее поле с текстом «Hello World!». Если нет, убедитесь, что ваш файл находится в правильной папке: поскольку mu-плагины автоматически активируются, вам не нужно делать ничего, кроме как поместить файл в правильный каталог.
Просмотр установленных плагинов Must-Use
Поскольку mu-плагины не могут быть деактивированы, они не будут отображаться в списке по умолчанию, где вы можете увидеть другие плагины. Однако это не означает, что вы не можете видеть список установленных в настоящее время обязательных плагинов.
В разделе « Plugins
Installed Plugins
Сначала ничего не изменилось, но посмотрите на вкладки под заголовком страницы. Вижу это?
Появилась новая вкладка: Must-Use
Нажмите на него, и, как вы можете догадаться, вы увидите список установленных mu-плагинов с сообщением, напоминающим нам, что эти плагины активируются автоматически.
Как вы можете видеть, этот список выглядит менее полным, чем тот, который показывает классические плагины: вы видите только имя файла, вы не видите, что делает плагин.
Мы можем изменить это, и способ сделать это изменение такой же, как и для классических плагинов: мы добавим комментарий, содержащий всю необходимую нам информацию. Добавьте следующий комментарий в начале файла.
/*
Plugin Name: Hello World!
Description: This is just a test.
Author: Jérémy Heleine
Version: 1.0
Author URI: http://jeremyheleine.me
*/
Замените различные значения вашими, обновите список обязательных плагинов и наслаждайтесь результатом!
Подкаталоги
В отличие от классического плагина, му-плагин не может храниться в подкаталоге mu-plugins
Однако, если WordPress не ищет плагины в подкаталогах, вы можете сделать это самостоятельно, с помощью своего собственного загрузчика.
Этот загрузчик будет новым mu-плагином, состоящим только из одного файла, непосредственно сохраненного в каталоге /wp-content/mu-plugins
Это необходимо, потому что если вы храните этот загрузчик в подкаталоге, он не будет выполняться WordPress, а другие плагины также не будут.
Как мы делали выше, создайте новый файл в каталоге /wp-content/mu-plugins
Я решил назвать этот файл load.php
Затем поместите следующую строку в этот файл.
require(WPMU_PLUGIN_DIR . '/myplugin/myplugin.php');
Эта строка включает файл myplugin.php
myplugin
/wp-content/mu-plugins
У вас есть то, что мы хотели: ваш плагин выполняется, даже если он не хранится напрямую в главном каталоге.
Если вы добавите новую папку, содержащую другой плагин mu, вам придется отредактировать файл load.php
Однако вы можете автоматизировать этот процесс благодаря некоторым функциям PHP. Замените содержимое файла load.php
// Opens the must-use plugins directory
$wpmu_plugin_dir = opendir(WPMU_PLUGIN_DIR);
// Lists all the entries in this directory
while (false !== ($entry = readdir($wpmu_plugin_dir))) {
$path = WPMU_PLUGIN_DIR . '/' . $entry;
// Is the current entry a subdirectory?
if ($entry != '.' && $entry != '..' && is_dir($path)) {
// Includes the corresponding plugin
require($path . '/' . $entry . '.php');
}
}
// Closes the directory
closedir($wpmu_plugin_dir);
Этот скрипт будет автоматически включать плагины mu, хранящиеся в подкаталогах. Обратите внимание, что для этого требуется, чтобы основной файл плагина имел имя своей папки.
Более того, вы можете увидеть еще один недостаток включения mu-плагинов, хранящихся в подкаталогах: так как они не найдены в WordPress по умолчанию, они не будут отображаться в списке обязательных плагинов, который мы представили выше. Таким образом, вы не сможете увидеть, какой плагин должен использоваться, не посмотрев на сам каталог.
В заключение
Обязательные плагины — это способ добавления функций в ядро WordPress путем добавления файлов в каталог wp-content
Преимущество в том, что они не будут удалены обновлением WordPress, поэтому вы можете быть уверены, что всегда будете извлекать свои функции.
Mu-плагин все еще плагин. Когда вы хотите добавить функцию в WordPress, вы часто можете выбрать либо использовать классический плагин, либо плагин, который необходимо использовать без риска не получить нужную вам функцию, если только эта функция не является ловушкой активации. Единственное различие между этими двумя типами плагинов заключается в том, что обязательные для использования плагины всегда будут выполняться и не могут быть деактивированы. Поэтому, если вы спросите себя, должны ли вы выбирать классические плагины или обязательные для использования, то рассматривать mu-плагины как расширение WordPress может быть хорошей идеей.
Наконец, есть еще один недостаток обязательных плагинов, который мы не рассмотрели выше. WordPress не скажет вам, существует ли обновление для плагинов mu, поэтому, если вы используете обновление, которое вы не написали самостоятельно, вам придется самостоятельно проверить, существует ли обновление.
Примеры этого руководства можно найти здесь , где вы найдете архив, содержащий четыре плагина mu: «Hello World!» пример и другой пример, который загружает два других «Hello World!» введите плагины, чтобы показать, что мы можем хранить mu-плагины в подкаталогах. Чтобы протестировать эти примеры, создайте подкаталог mu-plugins
wp-content