Как добавить динамические метаданные в WordPress по условию

Зачем нужны динамические метаданные в WordPress

Метаданные — это важная часть структуры WordPress, которая хранится в таблицах базы данных и отвечает за дополнительную информацию о постах, пользователях или таксономиях. Часто возникает задача задавать метаданные условно, чтобы, например, изменить SEO-заголовок, описание или произвольные поля в зависимости от параметров записи, категории или пользовательских условий. Это особенно полезно для автоматизации и повышения релевантности контента.

Стандартным способом добавления метаданных является использование функций add_post_meta или update_post_meta. Однако для динамического изменения метаданных в рантайме без постоянного хранения в базе потребуется использовать фильтры WordPress.

Такой подход позволяет не засорять базу, экономить место и гибко менять данные под разные условия, например, дату публикации, авторство, категорию или теги.

Использование фильтра wpteam_get_post_metadata для динамического добавления метаданных

В WordPress существует фильтр get_post_metadata, который позволяет перехватывать запросы к метаданным. Мы назовём нашу функцию с префиксом домена сайта — wpteam_dynamic_post_meta.

Пример кода для динамического добавления метаданных:

function wpteam_dynamic_post_meta( $null, $object_id, $meta_key, $single ) {
    // Проверяем нужный ключ метаданных
    if ( 'dynamic_seo_title' === $meta_key ) {
        $post = get_post( $object_id );
        if ( ! $post ) {
            return $null; // Пост не найден
        }
        // Пример условия: если пост в категории 'news', меняем SEO-заголовок
        if ( has_category( 'news', $post ) ) {
            $dynamic_title = 'Новости WPTeam: ' . $post->post_title;
            return $single ? $dynamic_title : array( $dynamic_title );
        }
    }
    return $null; // Возвращаем null, чтобы WP продолжил искать в базе
}
add_filter( 'get_post_metadata', 'wpteam_dynamic_post_meta', 10, 4 );

В этом примере, если запрашивается метаданные с ключом dynamic_seo_title, и пост принадлежит категории news, возвращается динамический заголовок. Иначе — возвращаем null, чтобы WordPress искал обычные метаданные в базе.

Добавление нескольких условий и кастомизация метаданных

Мы можем расширить логику, чтобы работать с разными метаданными и условиями. Например, добавить динамическое описание или ключевые слова для SEO, основанные на авторе или дате публикации.

function wpteam_dynamic_post_meta_extended( $null, $object_id, $meta_key, $single ) {
    $post = get_post( $object_id );
    if ( ! $post ) {
        return $null;
    }

    switch ( $meta_key ) {
        case 'dynamic_seo_description':
            // Если пост старше года — добавляем метку 'Архив'
            $post_date = strtotime( $post->post_date );
            if ( $post_date < strtotime( '-1 year' ) ) {
                $desc = 'Архивная запись: ' . wp_trim_words( $post->post_content, 20, '...' );
            } else {
                $desc = wp_trim_words( $post->post_excerpt ? $post->post_excerpt : $post->post_content, 30, '...' );
            }
            return $single ? $desc : array( $desc );

        case 'dynamic_seo_keywords':
            // Ключевые слова из названия и тегов
            $tags = get_the_tags( $object_id );
            $keywords = array( $post->post_title );
            if ( $tags && ! is_wp_error( $tags ) ) {
                foreach ( $tags as $tag ) {
                    $keywords[] = $tag->name;
                }
            }
            return $single ? implode( ', ', $keywords ) : $keywords;

        default:
            return $null;
    }
}
add_filter( 'get_post_metadata', 'wpteam_dynamic_post_meta_extended', 10, 4 );

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

Применение в SEO и кастомных шаблонах

Динамические метаданные удобно использовать в темах, например, в файле header.php или в SEO-плагинах, чтобы подставлять актуальные теги:

<title><?php echo esc_html( get_post_meta( get_the_ID(), 'dynamic_seo_title', true ) ?: get_the_title() ); ?></title>
<meta name="description" content="<?php echo esc_attr( get_post_meta( get_the_ID(), 'dynamic_seo_description', true ) ?: get_the_excerpt() ); ?>">
<meta name="keywords" content="<?php echo esc_attr( get_post_meta( get_the_ID(), 'dynamic_seo_keywords', true ) ); ?>">

Если у вас установлены плагины SEO, например, Clearfy Pro или Expert Review, вы можете интегрировать динамические метаданные в их функционал через хуки, расширяя возможности SEO-оптимизации.

Использование плагинов для управления динамическими метаданными

Если хочется облегчить работу с метаданными, можно использовать плагины типа Advanced Custom Fields (ACF) или Meta Box, но для динамических значений, которые не хранятся в базе, стоит писать кастомные фильтры, как показано выше.

Плагин Clearfy Pro содержит опции для оптимизации метаданных, но не заменит логику динамического формирования под условия. Здесь именно код даст максимум гибкости.

Выводы и рекомендации

Динамические метаданные позволяют гибко управлять дополнительной информацией о постах, не создавая излишней нагрузки на базу данных. Использование фильтра get_post_metadata — оптимальное решение для таких задач.

Важно тестировать все условия и сценарии, чтобы не допустить конфликтов с существующими метаданными и плагинами. Для отладки удобно использовать вывод значений с помощью error_log или плагинов для дебага.

Если нужно более сложное управление метаданными — комбинируйте код с возможностями популярных плагинов, например, интегрируйте динамические значения в шаблоны, создавайте собственные REST API или шорткоды для вывода.

Подробнее о плагинах для удобной работы с метаданными — на Clearfy Pro и Expert Review.

WooCommerce: как изменять стоимость товаров в корзине по условию
07.05.2026
Как автоматизировать управление публикациями в WordPress с помощью WP-Cron и кода
11.04.2026
Как добавить многоязычность в WordPress без плагинов
18.11.2025
Как защитить WordPress от взломов: практические советы
27.11.2025
Как создать автоматический импорт данных из Google Sheets в WordPress
21.01.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.