- Вопрос или проблема
- Ответ или решение
- Шаги для определения сайтов по теме или плагину с использованием WP CLI
- 1. Инициализация массива для хранения результатов
- 2. Получение списка всех сайтов
- 3. Цикл по сайтам
- 4. Проверка активной темы
- 5. Сравнение темы с желаемой
- 6. Закрытие цикла
- 7. Вывод результатов
- Фильтрация по активным плагинам
- Заключение
Вопрос или проблема
Мне нужно просмотреть десятки установок WordPress multisite (с поддержкой сети) для сайтов, использующих определенный плагин.
Как я могу перечислить только сайты, использующие определенную тему или плагин, желательно с помощью WP CLI или запроса к базе данных?
WP CLI – самый простой вариант здесь.
Сначала нам нужна массив/список, в который мы можем сохранить желаемые сайты:
results=()
Затем мы получаем список всех сайтов в качестве переменной и перебираем их:
blogs=$(wp site list --fields="blog_id" --format="csv")
for entry in $blogs
do
if [ "${entry}" == "blog_id" ]; then
continue # пропустить заголовок CSV
fi
Далее, получаем активную тему сайта:
theme=$(wp theme list --status=active --format=csv --fields="name" --url="${entry}" | sed -n 2p)
Здесь я использую | sed -n 2p
, чтобы получить вторую строку вывода, чтобы пропустить заголовок CSV.
Затем, если тема сайта совпадает с тем, что мы ищем, добавляем ее в список:
if $theme == 'mytheme';
if [ "${theme}" == "mytheme" ]; then
results+=($entry)
fi
После этого мы закрываем наш цикл
done
Превращаем наш список в строку, разделенную запятыми, и передаем ее в wp site list
через --sites__in
:
wp site list --site__in="${results[*]}"
Мы также можем поменять порядок получения темы и проверки вызова wp plugin is-active
, если мы хотим отфильтровать по активному плагину, например, wp plugin is-active hello
https://developer.wordpress.org/cli/commands/plugin/is-active/
Ответ или решение
Чтобы найти сайты, использующие определённую тему или плагин в установках WordPress Multisite, вы можете воспользоваться WP CLI или SQL-запросами к базе данных. В этой статье мы рассмотрим наиболее эффективный подход с использованием WP CLI, что является самым простым и удобным методом.
Шаги для определения сайтов по теме или плагину с использованием WP CLI
1. Инициализация массива для хранения результатов
Сначала создадим пустой массив, в который будут добавляться идентификаторы сайтов:
results=()
2. Получение списка всех сайтов
Следующим шагом мы получим список всех сайтов в сети и сохраним их идентификаторы в переменной:
blogs=$(wp site list --fields="blog_id" --format="csv")
3. Цикл по сайтам
Теперь мы можем пройтись по каждому сайту в полученном списке и выполнить необходимые проверки:
for entry in $blogs
do
if [ "${entry}" == "blog_id" ]; then
continue # пропустить заголовок CSV
fi
4. Проверка активной темы
На этом этапе получите активную тему для каждого сайта:
theme=$(wp theme list --status=active --format=csv --fields="name" --url="${entry}" | sed -n 2p)
5. Сравнение темы с желаемой
После получения темы, мы можем проверить, совпадает ли она с искомой:
if [ "${theme}" == "mytheme" ]; then
results+=($entry)
fi
Здесь mytheme
— это название темы, которую вы ищете.
6. Закрытие цикла
Не забудьте закрыть цикл done
:
done
7. Вывод результатов
После завершения цикла мы можем вывести список сайтов, которые соответствуют критериям:
wp site list --site__in="${results[*]}"
Фильтрация по активным плагинам
Если вам нужно искать сайты по активным плагинам, вы можете заменить проверку темы на вызов команды wp plugin is-active
, чтобы проверять, активен ли конкретный плагин:
if wp plugin is-active hello --url="${entry}"; then
results+=($entry)
fi
Здесь hello
— это название плагина, который вы хотите найти.
Заключение
Используя WP CLI, вы можете легко и быстро находить сайты в WordPress Multisite, которые используют определённые темы или плагины. Этот подход отлично справляется с задачей, минимизируя время и усилия, необходимые для выполнения поиска.
Для получения дополнительной информации о командах WP CLI вы можете обратиться к официальной документации: WP CLI Plugin Commands.
Следуя вышеизложенным шагам, вы сможете эффективно управлять своей сетью WordPress и находить нужные элементы с максимальной продуктивностью.