Зачем менять заголовок поста программно
Иногда стандартный заголовок поста 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 и визуальное восприятие.
Приведённые примеры и плагин помогут быстро внедрить изменения без сложных модификаций темы или базы данных.