Мета-описания в SEO Framework через фильтры description

Мета-описание (meta description) это короткий текст, который поисковик часто показывает под заголовком в выдаче. В The SEO Framework его можно задать вручную в карточке записи, а если нужна своя логика для типов страниц через фильтры description. Актуальная версия плагина в каталоге wordpress.org: 5.1.4 (требует WordPress 6.0+).

Какие фильтры смотреть в TSF 5.x

В справочнике фильтров (TSF Filter Reference) для description есть два основных фильтра:

  • the_seo_framework_custom_field_description: ручное description из карточки записи: влияет на meta description, соцметаданные и Schema;
  • the_seo_framework_description_excerpt: текст-источник, из которого TSF генерирует description, если в карточке пусто.

Фильтра the_seo_framework_description, который использовали в заметках 2024 года, в коде TSF 5.x больше нет: в пятой версии фильтры пересобрали, и старый код просто перестаёт срабатывать. Примеры ниже для TSF 5.0 и новее.

Пример: shortcode в ручном description

Код кладите в functions.php дочерней темы или в небольшой must-use плагин:

add_filter(
    'the_seo_framework_custom_field_description',
    function ( $description, $args ) {
        // Пример: прогнать shortcode в ручном meta description.
        return do_shortcode( $description );
    },
    10,
    2
);

Пример: своя логика для generated description

Если в карточке description пусто, TSF берёт excerpt/контент. Фильтр the_seo_framework_description_excerpt даёт подменить этот источник: для записей excerpt, для архивов фиксированная строка, остальное оставить плагину.

add_filter(
    'the_seo_framework_description_excerpt',
    function ( $excerpt, $args ) {
        $tsf = tsf();

        if ( null === $args ) {
            // Фронт, основной цикл.
            if ( $tsf->query()->is_singular() ) {
                $post = get_post( $tsf->query()->get_the_real_id() );
                if ( $post && $post->post_excerpt ) {
                    $excerpt = $post->post_excerpt;
                }
            } elseif ( $tsf->query()->is_archive() ) {
                $excerpt = 'Краткое описание раздела архива на вашем сайте.';
            }
        }

        return $excerpt;
    },
    10,
    2
);

Второй аргумент $args на фронте в цикле обычно null; вне цикла (админка, хлебные крошки) там данные запроса. Для точных проверок типа страницы удобнее API tsf()->query(), как в примерах KB, а не только голые is_singular().

На что смотреть после внедрения

  • view-source или SEO-карточка плагина: description должен совпадать с вашей логикой;
  • длина около 150-160 символов: длиннее часто обрежется в выдаче;
  • если description уже задан вручную и вы его не хотите трогать, в фильтре excerpt просто верните исходное значение;
  • после мажорного обновления TSF сверяйте фильтры со справочником: в KB прямо предупреждают перепроверять код на каждом major release.

В итоге в TSF 5.x meta description настраивают через the_seo_framework_custom_field_description и the_seo_framework_description_excerpt: один раз описали правила и сниппеты перестают быть случайным куском первого абзаца.

Источники и ссылки


Комментарии загружаются…