Как добавить динамические метаданные в 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.

Как автоматизировать удаление старого контента в WordPress с помощью WP-Cron и кода
16.02.2026
Как изменить размер и оптимизировать изображения в WordPress без плагинов
05.12.2025
Как создать динамические формы в WordPress с помощью AJAX
18.03.2026
Как использовать методы владельцев WordPress для управления публикациями
24.11.2025
Как автоматизировать создание резервных копий базы данных WordPress
15.12.2025

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