Как использовать WP-CLI для массового изменения метаданных постов в WordPress

Почему массовое изменение метаданных важно и когда оно актуально

Метаданные постов (post meta) в WordPress — это дополнительные данные, которые часто используются для хранения информации, не входящей в основное содержимое записи. В магазинах WooCommerce, новостных сайтах и порталах с большим количеством контента бывает нужно массово обновить или убрать метаданные, например, менять цены, статусы, теги или любые пользовательские поля.

Делать это вручную через админку невозможно при большом объеме, а плагины бывают медленными и требуют ресурсов. WP-CLI — командный интерфейс WordPress — позволяет эффективно и быстро автоматизировать задачи с метаданными.

Диагностика задачи: как понять, какие метаданные надо менять

Перед тем как запускать массовые изменения, нужно четко определить:

  • Какое метаполе нужно изменить (его ключ meta_key).
  • Для каких постов применяется изменение (по типу поста, дате, категории и т.д.).
  • Какое новое значение должно быть задано.

Для поиска метаданных можно использовать запросы к базе или WP-CLI:

wp post meta list 123 --format=json

где 123 — ID поста. Это покажет все метаданные одной записи, чтобы понять структуру.

Пошаговое решение с WP-CLI

1. Экспорт списка постов для изменения

Например, хотим изменить метаполе _custom_field для всех постов типа product, опубликованных после 2023-01-01:

wp post list --post_type=product --post_status=publish --date_query_column=post_date --after=2023-01-01 --field=ID

Эта команда выведет список ID нужных постов, которые можно использовать в цикле.

2. Массовое обновление метаданных

Напишем bash-скрипт, который пробежится по ID и обновит метаполе:

for post_id in $(wp post list --post_type=product --post_status=publish --date_query_column=post_date --after=2023-01-01 --field=ID); do
  wp post meta update $post_id _custom_field "Новое значение"
done

Если нужно удалить метаполе:

wp post meta delete $post_id _custom_field

3. Условные обновления по значению метаданных

WP-CLI напрямую не фильтрует посты по метаполям, но можно сделать SQL-запрос для получения ID, затем использовать их:

wp db query "SELECT post_id FROM wp_postmeta WHERE meta_key='_custom_field' AND meta_value='старое значение';" --skip-column-names

Сохраняем ID и обновляем их по циклу.

Проверка результата после внедрения

Для проверки обновленных метаданных выберите несколько постов из списка и выполните:

wp post meta get 123 _custom_field

Значение должно совпадать с новым. Также можно проверить на фронте сайта, если метаданные выводятся в шаблонах.

Частые ошибки и как их исправить

  • Ошибка: "Command not found" — WP-CLI не установлен или не настроен.
    Решение: Установите WP-CLI, следуя официальной инструкции https://wp-cli.org/#installing.
  • Ошибка: Неправильный ID поста или пустой список.
    Решение: Проверьте параметры фильтрации в команде wp post list. Используйте --format=json для удобного анализа.
  • Ошибка: Нет прав на изменение метаданных.
    Решение: Убедитесь, что пользователь, под которым работает WP-CLI, имеет права администратора сайта.
  • Ошибка: Некорректное значение метаполя после обновления.
    Решение: Проверьте кодировку и тип данных, используйте кавычки для строк и числовые значения без них.

Практические советы по безопасности и производительности

  • Перед массовым обновлением сделайте бэкап базы данных.
  • Запускайте команды пакетами по 50-100 постов, чтобы избежать таймаутов и перегрузки сервера.
  • По возможности ставьте лимит на выполнение скрипта (timeout) и логируйте действия для отката.
  • Для больших сайтов используйте параметр --skip-plugins и --skip-themes для ускорения работы WP-CLI.
  • Проверяйте изменения на тестовом стенде, а не сразу на продакшене.

Сравнение вариантов массового изменения метаданных

МетодПлюсыМинусыКогда использовать
WP-CLIБыстро, без нагрузки на фронт, подходит для больших объемовТребует доступа к серверу и базовым навыкам командной строкиОптимально для разработчиков и администраторов
Плагины массового редактированияПросты в использовании, графический интерфейсМогут тормозить, ограничены по функционалуДля небольших сайтов и администраторов без CLI доступа
SQL-запросы напрямуюМаксимально быстроВысокий риск ошибок, нужно знание структуры БДДля опытных разработчиков с бэкапом и тестами
Как избежать ошибок WooCommerce при массовом изменении цен товаров
30.04.2026
Как использовать WP-Cron для автоматического обновления данных в WordPress
07.01.2026
Как избежать ошибки Maximum execution time в WordPress
24.03.2026
Как использовать WP-CLI для массового изменения метаданных постов в WordPress
03.05.2026
Автоматическое изменение стоимости товаров в WooCommerce по условиям
04.06.2026