Как отключить лишние Open Graph-мета-теги в GeneratePress и оставить только нужные

В GeneratePress часто проблема не в отсутствии Open Graph, а в его дублировании. Тема сама по себе не обязана добавлять OG-разметку, но на практике она нередко появляется из нескольких источников: SEO-плагин, отдельный плагин для шаринга, настройки темы, а иногда ещё и код в дочерней теме. В итоге в исходнике оказываются два og:image, несколько twitter:card или конфликтующие meta property="og:title".

Для пользователя это выглядит как «картинка в соцсетях не та» или «Telegram/WhatsApp берут не тот заголовок». Для разработчика задача проще: найти источник дубля и оставить один контролируемый набор тегов.

Когда это действительно проблема

Сначала стоит убедиться, что речь именно о дублях, а не о том, что соцсеть кэшировала старую версию страницы. Проверять нужно исходный HTML, а не только предпросмотр ссылки.

Типичные симптомы

  • в коде страницы два и больше блока с meta property="og:*;
  • в Facebook Debugger или в превью Telegram подтягивается не та картинка;
  • после смены изображения в записи соцсети продолжают показывать старый вариант;
  • в исходнике есть и twitter:card, и дубли от другого плагина;
  • SEO-плагин настроен, но тема или дополнительный плагин добавляют свои мета-теги поверх него.

Как быстро диагностировать источник

Откройте исходный код страницы и найдите строки og: и twitter:. Если теги повторяются, посмотрите, какой плагин отвечает за разметку. Обычно это видно по набору тегов: Yoast, Rank Math, All in One SEO, плагин для шаринга или кастомный код в functions.php.

Если GeneratePress используется вместе с дочерней темой, проверьте ещё и такие места:

  • functions.php дочерней темы;
  • плагины для сниппетов кода;
  • настройки SEO-плагина;
  • кастомные вставки в шапку через хук wp_head;
  • кэш плагина и CDN.

Что именно отключать в GeneratePress

Если OG-теги добавляет не сама тема, а ваш код или сторонний плагин, задача сводится к тому, чтобы убрать лишний генератор мета-тегов. В GeneratePress удобнее всего работать через хуки, потому что это не ломает обновления темы.

Ниже два рабочих сценария: отключить собственную вставку и оставить SEO-плагин, либо полностью убрать конфликтующий код и отдать разметку одному источнику.

Вариант 1: убрать кастомные OG-теги из дочерней темы

Если в functions.php уже есть код, который печатает Open Graph вручную, его лучше удалить или обернуть в условие. Пример типичной вставки, которую часто приходится вычищать:

add_action( 'wp_head', 'mytheme_open_graph_tags', 5 );
function mytheme_open_graph_tags() {
    if ( is_singular() ) {
        global $post;
        $title = get_the_title( $post );
        $url   = get_permalink( $post );
        $image = get_the_post_thumbnail_url( $post, 'full' );

        echo '<meta property="og:title" content="' . esc_attr( $title ) . '" />' . "\n";
        echo '<meta property="og:url" content="' . esc_url( $url ) . '" />' . "\n";

        if ( $image ) {
            echo '<meta property="og:image" content="' . esc_url( $image ) . '" />' . "\n";
        }
    }
}

Если SEO-плагин уже формирует OG-разметку, этот код нужно удалить. Если нужен только один тег, например og:image для особого типа записей, лучше не печатать весь набор вручную, а точечно фильтровать данные в SEO-плагине.

Вариант 2: оставить один источник мета-тегов

Нормальная схема — один плагин отвечает за Open Graph и Twitter Cards, а всё остальное молчит. Это особенно важно, если у вас уже работает Yoast SEO, Rank Math или All in One SEO. GeneratePress в таком случае не должен добавлять ничего поверх.

Если дубли создаёт ваш собственный код, можно отключить его через условие:

add_action( 'wp_head', 'mytheme_open_graph_tags', 5 );
function mytheme_open_graph_tags() {
    if ( defined( 'WPSEO_VERSION' ) || defined( 'RANK_MATH_VERSION' ) || defined( 'AIOSEO_VERSION' ) ) {
        return;
    }

    if ( ! is_singular() ) {
        return;
    }

    $post_id = get_queried_object_id();
    $title    = get_the_title( $post_id );
    $url      = get_permalink( $post_id );
    $image    = get_the_post_thumbnail_url( $post_id, 'full' );

    echo '<meta property="og:title" content="' . esc_attr( $title ) . '" />' . "\n";
    echo '<meta property="og:url" content="' . esc_url( $url ) . '" />' . "\n";

    if ( $image ) {
        echo '<meta property="og:image" content="' . esc_url( $image ) . '" />' . "\n";
    }
}

Это не универсальный рецепт для всех сайтов, но для типовой связки GeneratePress + SEO-плагин он помогает быстро убрать конфликт.

Пошаговое решение без лишнего риска

  1. Откройте исходный код страницы и найдите все вхождения og: и twitter:.
  2. Определите, какой плагин или код их печатает.
  3. Оставьте один источник Open Graph-разметки.
  4. Очистите кэш сайта, сервера и CDN.
  5. Проверьте страницу в валидаторе соцсети или через повторный просмотр исходника.

Если у вас есть доступ к staging-копии, сначала проверьте изменения там. Это особенно полезно, когда OG-теги завязаны на шаблоны записей, а не на одну страницу.

Что делать, если дубли идут из SEO-плагина

В этом случае не нужно пытаться «победить» GeneratePress через хаки в теме. Проще отключить лишнюю разметку в самом SEO-плагине или убрать сторонний плагин шаринга. GeneratePress должен остаться нейтральным слоем, а не вторым генератором мета-тегов.

Если вы используете Clearfy Pro, там удобно чистить лишние элементы и дубли на уровне сайта, но принцип тот же: один источник мета-данных, остальные — выключены. Для GeneratePress это особенно важно, потому что тема часто используется в минималистичных сборках, где любой лишний код заметен сразу.

Как проверить, что решение сработало

Проверка должна быть не визуальной, а технической. Иначе легко принять старый кэш за рабочий результат.

  • в исходнике страницы должен остаться один набор og:title, og:description, og:image и twitter:card;
  • в DevTools на вкладке Elements не должно быть повторяющихся meta property="og:*;
  • после очистки кэша соцсети должны подтягивать актуальную картинку и заголовок;
  • при повторной публикации ссылки не должно быть скачков между разными изображениями;
  • если есть CDN, проверьте, что он отдал уже обновлённый HTML, а не старую версию.

Полезно открыть страницу в режиме инкогнито и сравнить исходник до и после очистки кэша. Если дубли исчезли в HTML, но превью всё ещё старое, проблема уже не в GeneratePress, а в кэше самой соцсети.

Сравнение подходов

ПодходЧто делаемПлюсыМинусы
Плагин SEOОставляем OG и Twitter Cards в одном SEO-плагинеМеньше ручного кода, проще поддержкаНужно следить за настройками плагина
Код в дочерней темеПишем мета-теги вручную через wp_headПолный контроль над выводомЛегко получить дубли и ошибки при обновлениях
Комбинированный вариантSEO-плагин для базовых тегов, код — только для исключенийГибко для сложных шаблоновНужна дисциплина, чтобы не задвоить вывод

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

Оставили старый код в дочерней теме

Самая частая причина дублей — забытый хук в functions.php или в плагине для сниппетов. Удаляйте не только функцию, но и сам add_action, иначе код может продолжать выполняться.

Очистили не весь кэш

Если на сайте есть кэш плагина, серверный кэш или CDN, изменения в HTML могут не попасть в браузер сразу. После правки очистите все уровни кэширования, иначе вы будете проверять старую версию страницы.

Пытаются отключить OG через CSS или шаблон записи

Open Graph — это мета-теги в <head>, а не элементы интерфейса. CSS здесь не поможет. Нужен либо отключаемый источник разметки, либо фильтр, либо удаление хука.

Смешивают несколько SEO-плагинов

Если одновременно активны два плагина, которые умеют генерировать OG и Twitter Cards, конфликт почти гарантирован. В GeneratePress это особенно заметно, потому что тема сама не маскирует проблему лишними слоями.

Практика безопасности и поддержки

Не редактируйте родительскую тему GeneratePress напрямую. Любое обновление затрёт изменения, и вы снова получите дубли или потеряете нужные теги. Для кода используйте дочернюю тему, mu-plugin или плагин для сниппетов, если он уже принят в проекте.

Если правка касается только одной группы страниц, лучше ограничить её условием is_singular() или проверкой типа записи. Так вы не сломаете архивы, главную и служебные страницы.

Когда нужно не просто убрать дубли, а системно почистить SEO-слой сайта на GeneratePress, имеет смысл смотреть в сторону инструментов, которые умеют отключать лишние элементы точечно. Но даже в этом случае сначала проверьте, кто именно печатает мета-теги, а уже потом меняйте конфигурацию.

Как отключить лишние стили и скрипты на отдельных страницах в GeneratePress
17.08.2026
Как отключить лишние изображения srcset на страницах без картинок в GeneratePress
26.08.2026
Как отключить встроенную XML-карту сайта в GeneratePress и отдать индексацию своему sitemap
29.08.2026
Как отключить пагинацию архивов в GeneratePress без потери индексации
23.08.2026
Как убрать дублирующиеся H1 и Title на страницах архивов в GeneratePress
13.08.2026