В WordPress по умолчанию заголовок записи выводится с помощью функции the_title(). Однако в некоторых случаях требуется изменить стандартный заголовок программно, например, добавить префикс, суффикс, или полностью заменить его на динамический текст. В этой статье мы подробно разберём, как это сделать с помощью фильтров и хуков, а также рассмотрим примеры кода и плагины, которые помогут автоматизировать процесс.
Почему и когда стоит менять заголовок записи
Стандартный заголовок WordPress — это просто текст, который пользователь вводит при создании записи. Но бывают ситуации, когда нужно:
- Добавить SEO-оптимизированный префикс или суффикс к заголовку;
- Подставить динамический контент, например, дату, категорию или рейтинг;
- Изменить заголовок в зависимости от условий — типа записи, пользователя или других параметров;
- Автоматически формировать заголовки при импорте или массовом обновлении записей.
Использование фильтра wptricks_the_title для изменения заголовка
WordPress предоставляет фильтр the_title, с помощью которого можно перехватить и изменить заголовок перед выводом. Для удобства и во избежание конфликтов мы создадим собственную функцию с префиксом wptricks_.
function wptricks_modify_post_title($title, $id) {
if (is_admin()) return $title; // не менять в админке
$post = get_post($id);
if (!$post) return $title;
// Пример: добавим префикс с датой публикации
$date = get_the_date('d.m.Y', $id);
$new_title = "[$date] " . $title;
return $new_title;
}
add_filter('the_title', 'wptricks_modify_post_title', 10, 2);Данный код добавляет в начало заголовка дату публикации в формате день.месяц.год. Обратите внимание, что мы исключаем изменение заголовка в админке, чтобы не мешать работе редактора.
Другие примеры изменения заголовков
Можно добавлять любые данные, например, название категории записи:
function wptricks_add_category_to_title($title, $id) {
if (is_admin()) return $title;
$categories = get_the_category($id);
if (!empty($categories)) {
$cat_names = wp_list_pluck($categories, 'name');
$title .= ' | Категории: ' . implode(', ', $cat_names);
}
return $title;
}
add_filter('the_title', 'wptricks_add_category_to_title', 10, 2);Изменение заголовка для определённого типа записи или шаблона
Если на сайте используются кастомные типы записей, можно применить условие, чтобы менять заголовок только для них:
function wptricks_modify_title_for_custom_post_type($title, $id) {
if (is_admin()) return $title;
$post = get_post($id);
if ($post && $post->post_type === 'product') { // например, тип product
$title = 'Товар: ' . $title;
}
return $title;
}
add_filter('the_title', 'wptricks_modify_title_for_custom_post_type', 10, 2);Такое решение удобно для интернет-магазинов или сайтов с разной структурой контента.
Изменение заголовка на странице архива или главной
Иногда нужно менять заголовки только в определённых местах:
function wptricks_modify_title_on_home_and_archive($title, $id) {
if (is_admin()) return $title;
if (is_home() || is_archive()) {
$title = 'Архив: ' . $title;
}
return $title;
}
add_filter('the_title', 'wptricks_modify_title_on_home_and_archive', 10, 2);Плагины для управления заголовками записей
Если не хочется писать код, можно использовать плагины, которые дают удобный интерфейс для изменения заголовков:
- Title Experiments Free — позволяет создавать вариации заголовков для A/B тестирования.
- WPGPT от WPShop — автоматизирует создание заголовков с помощью ИИ, что помогает генерировать привлекательные и SEO-оптимизированные названия. Подробнее на wpshop.ru.
- Clearfy Pro
Советы по оптимизации и безопасности при изменении заголовков
При программном изменении заголовков учитывайте следующие моменты:
- Не меняйте заголовки в админке, чтобы не ломать интерфейс редактирования.
- Проверяйте корректность HTML, если добавляете теги.
- Кэшируйте результаты, если изменения сложные, чтобы не замедлять сайт.
- Используйте префиксы в названиях функций, чтобы избежать конфликтов с другими плагинами.
Как сделать функцию для массового обновления заголовков в базе
Если нужно изменить заголовки в базе (например, добавить префикс ко всем существующим записям), можно использовать следующий пример:
function wptricks_update_all_post_titles() {
// Получаем все посты
$posts = get_posts(['numberposts' => -1, 'post_type' => 'post']);
foreach ($posts as $post) {
$new_title = '[Обновлено] ' . $post->post_title;
wp_update_post([
'ID' => $post->ID,
'post_title' => $new_title
]);
}
}
// Запускать вручную, например, через WP-CLI или временно подключить и вызвать функцию
// wptricks_update_all_post_titles();Этот код добавит префикс [Обновлено] ко всем заголовкам. Используйте с осторожностью и делайте резервную копию базы.