Иногда возникает задача системно изменить заголовки постов на сайте WordPress по определённому шаблону. Например, добавить префикс с датой публикации, суффикс с категорией или автоматом исправить форматирование. В этой статье мы рассмотрим, как автоматизировать это с помощью хуков WordPress и небольшого плагина, который можно адаптировать под свои нужды.
Почему важно автоматическое изменение заголовков
Заголовок — один из ключевых элементов SEO и пользовательского опыта. Ручное редактирование сотен или тысяч постов занимает много времени и может привести к ошибкам. Автоматизация позволяет:
- Единообразно форматировать заголовки;
- Добавлять важную информацию (дату, категорию, бренд);
- Исправлять опечатки или ошибки;
- Облегчать массовые правки без риска сломать структуру сайта.
WPBit предлагает использовать собственные хуки и фильтры WordPress для решения таких задач быстро и эффективно.
Используем фильтр the_title для динамического изменения заголовков
Фильтр the_title срабатывает при выводе заголовка записи. Подключившись к нему, мы можем изменить заголовок на лету без изменения в базе данных.
Пример плагина WPBit, который добавляет дату публикации в начало заголовка:
<?php
/*
Plugin Name: WPBit Title Prefix
Description: Добавляет дату публикации перед заголовком поста
Version: 1.0
Author: WPBit.ru
*/
add_filter('the_title', 'wpbit_prefix_post_title', 10, 2);
function wpbit_prefix_post_title($title, $post_id) {
if (is_admin()) return $title; // не менять в админке
$post = get_post($post_id);
if ($post->post_type !== 'post') return $title; // только для записей
$date = get_the_date('Y-m-d', $post_id);
return "[{$date}] " . $title;
}
?>Этот код проверяет, чтобы изменения применялись только на фронтенде и только к записям типа "post". В результате в списках постов и на странице записи заголовок будет отображаться с префиксом даты.
Как добавить категорию в суффикс заголовка
Расширим плагин, чтобы добавлять в конце заголовка название первой категории записи:
add_filter('the_title', 'wpbit_suffix_post_title', 20, 2);
function wpbit_suffix_post_title($title, $post_id) {
if (is_admin()) return $title;
$post = get_post($post_id);
if ($post->post_type !== 'post') return $title;
$categories = get_the_category($post_id);
if (!empty($categories)) {
$title .= ' | ' . $categories[0]->name;
}
return $title;
}Теперь заголовок будет иметь формат: [2024-06-01] Заголовок поста | Категория. Такой подход помогает улучшить восприятие темы записи и удобство навигации.
Массовое обновление заголовков в базе данных
Фильтр the_title меняет заголовки только при выводе. Если нужно перезаписать заголовки в базе, чтобы они изменились в админке и URL (если структура зависит от заголовка), потребуется массовое обновление.
Пример функции для массового обновления заголовков постов с добавлением префикса даты:
function wpbit_update_post_titles() {
$args = [
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'publish',
];
$posts = get_posts($args);
foreach ($posts as $post) {
$date = get_the_date('Y-m-d', $post->ID);
$new_title = "[{$date}] " . $post->post_title;
// Обновляем только если заголовок ещё не изменён
if (strpos($post->post_title, "[{$date}]") === false) {
wp_update_post([
'ID' => $post->ID,
'post_title' => $new_title
]);
}
}
}<Вызовите эту функцию один раз, например, через WP-CLI или подключив к акшену admin_init (только с проверкой прав), чтобы обновить все посты.
Использование плагинов для автоматизации
Если вы не хотите писать код, можно использовать плагины для массового редактирования заголовков, например:
- Clearfy Pro — расширенные возможности оптимизации и массового редактирования;
- Bulk Edit Plugins — позволяют фильтровать и менять заголовки, но требуют ручного запуска.
Однако собственный код даёт гибкость и точное попадание под ваши задачи.
Заключение по теме автоматического изменения заголовков WordPress
Автоматизация изменения заголовков в WordPress улучшает качество контента и экономит время. Используйте фильтр the_title для динамических изменений при выводе и массовые обновления через wp_update_post, если требуется перезаписать данные в базе.
WPBit рекомендует строить решения на базе собственных хуков и фильтров, чтобы сохранить производительность и избежать конфликтов с темами и плагинами.