Как массово изменить title и meta description в WordPress без плагинов

В чем проблема с массовым изменением мета-тегов в WordPress?

По умолчанию WordPress не предлагает встроенных инструментов для массового редактирования SEO мета-тегов, таких как title и meta description. Многие пользуются плагинами (Yoast SEO, All in One SEO), но они не всегда подходят: например, при желании минимизировать количество плагинов, или если нужно выполнить очень специфические изменения. В таком случае помогает прямое изменение в базе данных или создание кастомных функций.

Диагностика: как проверить текущие значения title и meta description

Для начала нужно понять, какие meta-теги сейчас установлены. Сделать это можно так:

  • Откройте исходный код страницы (Ctrl+U) и найдите <title> и <meta name="description">.
  • В админке WordPress перейдите в редактирование записи/страницы и проверьте наличие SEO-полей, если они есть.
  • Если SEO-поля отсутствуют, значит мета-теги генерируются автоматически (часто по заголовку и контенту).

Для массовой диагностики можно выполнить SQL-запрос, чтобы получить список всех записей с их заголовками и мета-описаниями (если они хранятся в usermeta или postmeta):

SELECT p.ID, p.post_title, pm.meta_key, pm.meta_value FROM wp_posts p LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id WHERE pm.meta_key IN ('_yoast_wpseo_title', '_yoast_wpseo_metadesc') AND p.post_type = 'post';

Пошаговое решение: массовое изменение title и meta description через functions.php

Если вы хотите автоматизировать изменение мета-тегов без плагина, можно использовать хук wp_head, чтобы программно переопределить эти теги. Например, добавим префикс к title и описание для всех постов.

Добавьте следующий код в файл functions.php вашей темы или дочерней темы:

function custom_modify_seo_tags() {
    if (is_singular('post')) {
        global $post;
        $prefix = 'Мой сайт - ';
        $title = $prefix . get_the_title($post->ID);
        $description = get_post_meta($post->ID, '_custom_meta_description', true);
        if (!$description) {
            // Если описания нет, создадим на основе excerpt
            $description = wp_trim_words(strip_tags($post->post_content), 20);
        }
        echo "<title>" . esc_html($title) . "</title>\n";
        echo "<meta name=\"description\" content=\"" . esc_attr($description) . "\"/>\n";
        // Остановим дальнейший вывод стандартных SEO тегов
        remove_all_actions('wp_head');
        add_action('wp_head', 'custom_modify_seo_tags');
    }
}
add_action('wp_head', 'custom_modify_seo_tags', 1);

Этот код заменит title и meta description для всех одиночных постов, добавив префикс к заголовку и используя либо пользовательское поле _custom_meta_description, либо краткое описание из контента.

Массовое добавление пользовательских описаний через SQL

Чтобы добавить уникальные описания в _custom_meta_description для всех постов, можно использовать пример SQL-запроса:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID, '_custom_meta_description', LEFT(REPLACE(post_content, '\n', ' '), 160) FROM wp_posts
WHERE post_type = 'post' AND post_status = 'publish'
AND ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = '_custom_meta_description');

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

  • Откройте несколько постов на сайте и проверьте в исходном коде страницы, что title начинается с «Мой сайт -» и присутствует meta description.
  • Можно использовать онлайн инструменты, например Meta Tag Analyzer для автоматической проверки мета-тегов.
  • Для массовой проверки используйте WP-CLI команду:
wp post list --post_type=post --fields=ID,post_title --format=csv | while IFS=, read -r ID TITLE; do
  curl -s https://example.com/?p=$ID | grep -E '<title>|<meta name="description"';
done

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

  • Тег title дублируется или не обновляется — возможно, конфликтуют плагины SEO. Отключите плагины SEO или убедитесь, что ваш код выполняется с приоритетом выше (например, 1).
  • meta description не выводится — проверьте, что в коде нет других хуков, которые удаляют или перезаписывают wp_head.
  • производительность падает — старайтесь не выполнять тяжелые операции в хуках, используйте кэширование.
  • SQL-запрос не сработал — проверьте префикс таблиц, а также права пользователя базы данных.

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

  • Не удаляйте все действия из wp_head без разбора — это может сломать работу других важных плагинов и тем.
  • Для крупных сайтов лучше хранить SEO мета-теги в пользовательских полях и обновлять их через WP-CLI или отдельные скрипты, чтобы избежать нагрузки.
  • Используйте подготовленные запросы и функции WordPress для работы с базой данных (например, $wpdb->prepare()), если реализуете массовые операции в PHP.
  • Для автоматизации обновления SEO мета-тегов рассмотрите использование плагинов типа Clearfy Pro от WPSHOP — они оптимизированы и безопасны.

Сравнение вариантов массового обновления SEO мета-тегов

МетодПлюсыМинусыПодходит для
Плагины SEO (Yoast, RankMath)Удобство, много функций, поддержкаНагрузка, конфликты, ограниченная кастомизацияМалые и средние сайты
Код в functions.php (как в статье)Гибкость, отсутствие лишних плагиновТребует знаний, риск ошибокОпытные разработчики
Прямое обновление базы через SQLОчень быстро, массовоРиск повреждения данных, требует бэкапаАдминистраторы с доступом к БД
Как отключить автообновления плагинов в WordPress с помощью кода
31.01.2026
Как временно отключить WooCommerce без потери данных
21.05.2026
Как использовать WP-Cron для задач с отложенным стартом в WordPress
19.12.2025
Как изменить URL адреса страниц в WordPress
10.11.2025
Как использовать WP-CLI для массовых изменений в WordPress
20.04.2026