Плагины в папке mu-plugins не загружаются
Я пытаюсь автоматически загружать плагины, помещая их в папку mu-plugins
. Однако если плагин находится в подпапке, он не загружается. Я пробовал популярные плагины, такие как W3 Total Cache, WordPress SEO By Yoast, но ни один из них не загружается.
WordPress загружает только те плагины, которые представляют собой одиночные файлы в mu-plugins
?

Загружает ли WordPress только плагины, которые представляют собой одиночные файлы в mu-plugins?
Нет, они не обязательно должны быть одиночными файлами, но вы не можете использовать плагины в собственных подпапках, как в стандартной папке plugins/
.
Главный файл плагина (тот, который содержит информацию о плагине в заголовке) должен находиться непосредственно в mu-plugins/
. Остальные файлы можно разместить в подпапке и ссылаться на них оттуда.
Я сам использовал этот подход со своими плагинами. Никогда не пробовал переносить туда сложные плагины.
Также учтите, что не все плагины совместимы с must-use
подробнее см. http://codex.wordpress.org/Must_Use_Plugins#Caveats

Я недавно столкнулся с этой проблемой и, чтобы избежать смешения всех плагинов или исправления файлов для поддержания порядка, обнаружил, что можно хранить все плагины в отдельных подпапках и создать символическую ссылку в папке mu-plugins
, указывающую на основной файл плагина в соответствующей подпапке.
Надеюсь, что эта информация окажется полезной для других в будущем!

Я работал над запуском WordPress внутри Docker-контейнеров и использовал mu-plugins для выполнения скриптов на сервере. Я обнаружил, что в WordPress есть глобальная константа WPMU_PLUGIN_DIR
, которая поможет решить эту проблему.
Создавайте свои пользовательские плагины в поддиректориях mu-plugin
по мере необходимости, а затем загружайте их из одного файла. Пример:
wp-content/mu-plugins/foo/bar.php
wp-content/mu-plugins/another/index.php
Затем создайте один файл в mu-plugins и назовите его как угодно.
Например, создайте wp-content/mu-plugins/load.php
со следующим кодом:
<?php
require(WPMU_PLUGIN_DIR . '/foo/bar.php');
require(WPMU_PLUGIN_DIR . '/another/index.php');
В админке вы увидите только load.php
в разделе mu-plugins, но все ваши функции будут загружаться из этого единого скрипта.
