В WordPress по умолчанию заголовок поста задаётся вручную при создании записи. Но бывает ситуация, когда нужно автоматически формировать заголовки постов на базе определённых правил, данных из метаполей, таксономий или других источников. В этой статье мы разберём, как изменить автозаголовки постов в WordPress программно и с помощью плагинов, чтобы оптимизировать процесс публикации и повысить SEO-эффективность.
Почему стоит автоматизировать заголовки постов
Автоматизация заголовков полезна в нескольких сценариях:
- При массовом импорте контента, когда вручную задавать заголовки неудобно.
- Для создания шаблонных заголовков с динамическими элементами — датами, категориями, уникальными метками.
- Для SEO-оптимизации с учётом ключевых слов и структуры URL.
- Для упрощения работы редакторов и авторов, минимизируя ошибки и дубли.
Рассмотрим, как реализовать эти задачи на практике.
Изменение заголовка при сохранении поста с помощью хука save_post
Самый прямой способ изменить заголовок — использовать хук save_post, который вызывается при сохранении записи. Ниже пример функции yelly_change_post_title, которая автоматически заменяет заголовок на основе метаполя subtitle и текущей даты.
function yelly_change_post_title($post_id) {
// Проверяем, чтобы это была нужная запись, а не автосохранение
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$post = get_post($post_id);
if ($post->post_type !== 'post') {
return;
}
$subtitle = get_post_meta($post_id, 'subtitle', true);
if (!empty($subtitle)) {
$new_title = $subtitle . ' — ' . date('d.m.Y');
// Обновляем заголовок
wp_update_post(array(
'ID' => $post_id,
'post_title' => $new_title,
));
}
}
add_action('save_post', 'yelly_change_post_title');В этом примере заголовок формируется как сочетание метаполя subtitle и текущей даты. Чтобы использовать этот код, нужно добавить метаполе при создании поста, например через пользовательское поле или ACF.
Генерация заголовка на лету при выводе поста с помощью фильтра the_title
Если не хочется менять заголовок в базе, а нужно лишь динамически выводить его на сайте, можно использовать фильтр the_title. Пример функции yelly_dynamic_post_title:
function yelly_dynamic_post_title($title, $post_id) {
if (is_admin()) {
return $title; // Не меняем в админке
}
$post = get_post($post_id);
if ($post->post_type === 'post') {
$custom_tag = get_post_meta($post_id, 'custom_tag', true);
if ($custom_tag) {
$title .= ' | Тег: ' . esc_html($custom_tag);
}
}
return $title;
}
add_filter('the_title', 'yelly_dynamic_post_title', 10, 2);Такой подход позволяет добавлять к заголовку дополнительную информацию без изменения данных в базе. Это удобно для SEO-оптимизации и кастомного отображения.
Плагины для автоматического создания заголовков
Если хочется обойтись без кода, можно использовать плагины, которые позволяют настраивать шаблоны заголовков:
- Auto Post Title — плагин, автоматически создающий заголовки по шаблону из полей, дат, категорий. Можно задать шаблон в админке.
- Title Experiments Free — позволяет тестировать разные варианты заголовков для повышения кликабельности.
- Custom Post Type UI в сочетании с ACF — позволяет создавать собственные типы записей с шаблонами заголовков.
Плагины с интерфейсом упрощают работу, особенно если у вас нестандартные типы постов или сложные условия для заголовков.
Пример: автоматический заголовок для новостного сайта с использованием плагина и кода
Представим, что на сайте размещаются новости, и нужно формировать заголовок из категории новости, даты и ключевого слова из метаполя keyword.
Сначала можно установить плагин Auto Post Title, настроить шаблон заголовка, например:
{category} - {keyword} ({date})
Чтобы ключевое слово бралось из метаполя, добавим код, который будет подставлять это значение:
function yelly_auto_post_title_filter($title, $post_id) {
$keyword = get_post_meta($post_id, 'keyword', true);
if ($keyword) {
$title = str_replace('{keyword}', $keyword, $title);
}
return $title;
}
add_filter('auto_post_title_template', 'yelly_auto_post_title_filter', 10, 2);Таким образом комбинируется удобство плагина и гибкость кода.
Как избежать проблем при изменении заголовков
При автоматическом изменении заголовков важно:
- Проверять, чтобы не было зацикливания при сохранении поста (использовать проверки автосохранения и ревизий).
- Оставлять возможность ручной правки заголовка, если автоматический вариант не подходит.
- Учитывать влияние на SEO — резкие изменения заголовков могут повлиять на индексацию.
- Тестировать все изменения на тестовом сайте перед применением на боевом.
Соблюдение этих рекомендаций поможет избежать ошибок и сбоев.
Итоги и рекомендации
Изменение автозаголовков в WordPress — мощный инструмент для автоматизации и улучшения контента. Используйте save_post для изменения заголовка в базе, the_title для динамического вывода, а также комбинируйте с плагинами для удобства. Обязательно тестируйте изменения и сохраняйте резервные копии.
Если хотите более продвинутые решения, рекомендуем обратить внимание на плагин Clearfy Pro, который содержит модули для управления SEO и заголовками.