wpnotes.ru wordpress WP Notes

Как изменить заголовок постов в WordPress программно: практическое руководство

Зачем менять заголовок поста программно

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

В этой статье рассмотрим, как изменить заголовок поста до вывода на сайте, используя фильтры WordPress. Это позволит гибко управлять заголовками без изменения контента в админке.

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

Основные способы изменить заголовок поста в WordPress

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

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

Использование фильтра the_title

Фильтр позволяет перехватывать заголовок и менять его программно. Пример простой функции:

function wpnotes_change_post_title($title, $id) {
    if (is_admin()) return $title; // не менять в админке
    if (get_post_type($id) === 'post') {
        $title = '[WPNotes] ' . $title; // добавляем префикс
    }
    return $title;
}
add_filter('the_title', 'wpnotes_change_post_title', 10, 2);

Этот код добавляет префикс [WPNotes] ко всем заголовкам постов на фронтенде сайта.

Динамическое добавление данных к заголовку

Часто нужно добавлять к заголовку данные из произвольных полей, таксономий или другой логики. Рассмотрим пример, когда к заголовку добавляется дата последнего обновления поста.

function wpnotes_add_updated_date_to_title($title, $id) {
    if (is_admin()) return $title;
    if (get_post_type($id) === 'post') {
        $updated = get_post_modified_time('d.m.Y', false, $id);
        $title .= ' (обновлено: ' . $updated . ')';
    }
    return $title;
}
add_filter('the_title', 'wpnotes_add_updated_date_to_title', 10, 2);

Таким образом пользователь видит в заголовке дату последнего изменения поста.

Форматирование заголовков в зависимости от условий

Можно менять заголовки для разных категорий или тегов. Например, добавим пометку для постов из категории новости:

function wpnotes_title_for_category_news($title, $id) {
    if (is_admin()) return $title;
    if (get_post_type($id) !== 'post') return $title;
    if (has_category('novosti', $id)) {
        $title = '📰 ' . $title;
    }
    return $title;
}
add_filter('the_title', 'wpnotes_title_for_category_news', 10, 2);
<

Здесь мы добавляем иконку газеты перед заголовком для постов из категории «новости».

Плагин для управления заголовками — пример реализации

Чтобы не копировать код в файлы темы, лучше оформить логику в плагин. Создадим простой плагин WPNotes Title Modifier, который позволит менять заголовки.

Структура плагина:

  • wpnotes-title-modifier.php — основной файл

Содержание файла:

<?php
/*
Plugin Name: WPNotes Title Modifier
Description: Изменяет заголовки постов программно
Version: 1.0
Author: WPNotes
*/

function wpnotes_title_modifier_filter($title, $id) {
    if (is_admin()) return $title;
    if (get_post_type($id) !== 'post') return $title;

    // Добавляем дату обновления
    $updated = get_post_modified_time('d.m.Y', false, $id);
    $title .= ' (обновлено: ' . $updated . ')';

    // Добавляем иконку, если категория новости
    if (has_category('novosti', $id)) {
        $title = '📰 ' . $title;
    }

    return $title;
}
add_filter('the_title', 'wpnotes_title_modifier_filter', 10, 2);
?>

Этот плагин можно загрузить и активировать через админку. Он автоматически изменит заголовки в соответствии с логикой.

Как избежать проблем с SEO и отображением

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

Чтобы SEO не страдало, стоит менять заголовки в контексте the_title и также обновлять метатеги через SEO-плагины, если они поддерживают фильтры.

Также нужно исключать изменения в админке и RSS, чтобы не создавать путаницы.

Дополнительные идеи по работе с заголовками

Можно расширить функционал, добавив:

  • Автоматическую генерацию заголовков при сохранении поста на основе шаблонов
  • Добавление уникальных идентификаторов к заголовкам для аналитики
  • Интеграцию с кастомными полями для вывода дополнительной информации
  • Создание настроек в админке для включения/выключения изменений

Все эти функции легко реализовать через хуки WordPress и PHP.

Вывод

Изменение заголовков постов программно — мощный инструмент для кастомизации сайта на WordPress. Используя фильтр the_title, можно легко модифицировать заголовки под свои задачи, улучшить UX, SEO и визуальное восприятие.

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее