Обязательные плагины в WordPress (mu-plugins)
Обязательные плагины в WordPress (mu-plugins) — это плагины, которые физически находятся в специальной папке /wp-content/mu-plugins/. Эти плагины всегда включены, активируются автоматически и их нельзя деактивировать.
В админке, в списке обычных плагинов они не отображаются. Но, они видны в разделе Плагины — Необходимые.
Эти плагины считываются только тогда, когда находятся не в виде папок, а в виде отдельных файлов. Т.е. один файл = один плагин. WordPress не умеет видеть такие плагины, если они находятся в папках.
В общем, эти плагины это просто набор файлов, которые выполняют пользовательские/произвольные функции. Функции могут быть разными. Например, у нас есть функция вывода хлебных крошек, или функции подключения файлов локализации, или любые др. функции. Для того, чтобы такие функции начали работать, их нужно вставить в функциональный файл шаблона, например в файл functions.php. Но, таких функций может быть много и они затрутся после обновления шаблона.
Я считаю, что это создает неудобство при обновлении шаблона. Нам нужно вспоминать где мы и что вставляли и снова это переносить в новый файл.
Для таких целей лучше использовать файлы обязательных плагинов.
Практическое применение этих плагинов обычными пользователями
Расскажу как я лично использую эти обязательные плагины.
1) Вставка произвольных функций
На своих сайтах я создаю в папке /mu-plugins/ файл myfunctions.php и добавляю в этот файл все свои произвольные функции. При этом функциональный файл шаблона содержит только авторский код.
2) Подключение файлов локализации
Я занимаюсь локализацией шаблонов и плагинов WordPress. Очень часто для подключения основных и дополнительных доменов локализации необходимо прописывать дополнительные функции подключения файлов локализации. Эти функции также прописываются в функциональных файлах шаблонов. После обновления шаблона моим клиентам снова придется вставлять эти функции подключения файлов локализации.
Но, с помощью плагинов mu-plugins этого не надо делать после каждого обновления шаблона. Вам достаточно один раз создать файл с функциями и поместить его в папку /mu-plugins (предварительно вам нужно создать такую папку).
Содержимое обязательного плагина mu-plugins
<?php
/*
Plugin Name: Название плагина
Description: Описание плагина
Author: Автор
Author URI: Ссылка на сайт автора
*/
//---Код ваших функций-----------
//----конец функции-------------
?>
Название файла плагина может быть любым, только на английском языке. Заполните служебную информацию о плагине в шапке файла, а потом между //— вставьте ваши функции.
Пример файла с функциями
Название файла — myfunctions.php
<?php
/*
Plugin Name: Мои произвольные функции
Description: Произвольные функции
Author: Николай Пекарский
Author URI: https://inwebpress.com
*/
// Код
//Отключение некоторых ссылок в меню консоли пользователя
add_action( 'wp_head', 'true_move_admin_bar' ); // на сайте
function my_admin_bar_render() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('comments');
$wp_admin_bar->remove_menu('appearance');
$wp_admin_bar->remove_menu('site-name');
$wp_admin_bar->remove_menu('customize');
$wp_admin_bar->remove_menu('wp-logo');
$wp_admin_bar->remove_menu('new-content');
$wp_admin_bar->remove_menu('updates');
$wp_admin_bar->remove_menu('edit.php?post_type=cf7_style');
}
add_action( 'wp_before_admin_bar_render', 'my_admin_bar_render' );
?>
Пример файла плагина с функциями подключения файлов локализации
Название файла — localization.php
<?php
/*
Plugin Name: Подключение файлов локализации для темы
Description: Файлы локализации от inwebpress.ru
Author: Николай Пекарский
Author URI: https://inwebpress.com
*/
// Код подключения
//--------------------russian localization---------------------------
load_theme_textdomain( 'osetin', get_template_directory() . '/languages' );
load_theme_textdomain( 'tgmpa', get_template_directory() . '/languages' );
load_theme_textdomain( 'sun', get_template_directory() . '/languages' );
load_theme_textdomain( 'moon', get_template_directory() . '/languages' );
load_theme_textdomain( 'pluto', get_template_directory() . '/languages' );
//-------------------russian localization---------------------------
?>
Используйте обязательные плагины mu-plugins и не захламляйте своими функциями файлы шаблона.