Вопрос или проблема
Я новичок в разработке мультисайтов, и мне сложно ответить на этот вопрос: у меня есть унаследованная сеть Мультисайт, и мне поручили удалить несколько плагинов по всей сети.
Вопрос в том, что плагины в настоящее время деактивированы на уровне главной сети. Интересно, есть ли какой-то быстрый способ проверить, активны ли они по отдельности на сайтах в сети?
Проведя несколько выборочных проверок, я вижу деактивированный плагин как опцию на некоторых из суб-сайтов, с возможностью активировать их по отдельности, я полагаю, активация на этом уровне не повлияет на сеть?
Всего около 50 сайтов, поэтому проверять каждый вручную не оптимально.
Спасибо
Хотя вопрос достаточно старый, я хотел бы поделиться с вами небольшим кодом.
Вот как проверить, активирован ли плагин по отдельности для некоторых сайтов:
$sites = get_sites();
foreach( $sites as $site ) {
switch_to_blog( $site->blog_id );
if( in_array( 'YOUR PLUGIN TO CHECK', (array) get_option( 'active_plugins', array() ) ) ) {
// да, он активен для $site->blog_id
}
restore_current_blog();
}
Этот код полностью функционален, вам нужно лишь заменить ‘YOUR PLUGIN TO CHECK’ на фактический плагин, например woocommerce/woocommerce.php.
Если вам нужны более подробные сведения об этом коде, вы можете найти их в этом учебнике: https://rudrastyh.com/wordpress/check-if-plugin-is-active-in-multisite.html
Чтобы проверить, активен ли плагин на отдельных сайтах в сети WordPress Multisite, вы можете использовать функцию is_plugin_active_for_network. Эта функция принимает в качестве аргумента путь к файлу плагина и возвращает true, если плагин активен в сети, и false, если нет.
Вот пример того, как вы можете использовать эту функцию, чтобы проверить, активен ли плагин на отдельных сайтах в вашей сети:
wp plugin list --status=active --network
Это покажет вам список всех активных плагинов в сети, включая те, которые активны на отдельных сайтах сети.
Ответ или решение
Понимание и управление плагинами в сети MultiSite WordPress может быть вызовом, особенно для новичков в этой области. Когда вам необходимо удалить плагины в сетевом масштабе, важно убедиться, что они не активированы на отдельных сайтах в сети.
Проблема
Вы унаследовали сеть MultiSite WordPress и получили задачу удалить несколько плагинов на уровне всей сети. Вопрос в том, как быстро проверить, активированы ли эти плагины на отдельных сайтах, особенно если они деактивированы на уровне сети.
Решение
Чтобы эффективно решить эту задачу, можно использовать небольшой PHP-скрипт, который проверяет активность плагина на каждом сайте в сети. Этот подход позволяет автоматизировать процесс и избежать рутинных ручных проверок, особенно если в сети около 50 сайтов.
Код для проверки плагинов
$sites = get_sites(); // Получаем все сайты в сети
foreach( $sites as $site ) {
switch_to_blog( $site->blog_id ); // Переключаемся на текущий сайт
// Проверяем, активирован ли плагин
if( in_array( 'YOUR PLUGIN TO CHECK', (array) get_option( 'active_plugins', array() ) ) ) {
// Плагин активен на $site->blog_id
}
restore_current_blog(); // Восстанавливаем контекст основного блога
}
Замените 'YOUR PLUGIN TO CHECK'
на путь к вашему конкретному плагину, например, woocommerce/woocommerce.php
.
Этот код позволяет обойти все сайты сети и проверить, активированы ли интересующие вас плагины. В результате вы получите информацию о том, на каких сайтах плагины все ещё активны, и сможете принять дальнейшие меры для их деактивации.
Дополнительные инструменты
Для изучения активности плагинов можно также использовать WP-CLI команду:
wp plugin list --status=active --network
Эта команда выводит все активные плагины на уровне сети, включая те, которые активны на отдельных сайтах.
Заключение
Управление плагинами в сети MultiSite требует систематического подхода и автоматизации. Использование кода и инструментов, таких как WP-CLI, может существенно облегчить задачу и дать уверенность в том, что плагины корректно управляются и деактивируются в соответствии с вашими требованиями.
Этот простейший скрипт позволяет улучшить вашу работу с MultiSite, используя автоматизацию и минимизируя ручные ошибки.