Автоматическая генерация заголовков постов — одна из базовых функций WordPress, которая обычно работает по умолчанию, используя заголовок, заданный пользователем. Однако в некоторых случаях требуется изменить автозаголовки программно, например, добавить к ним префиксы, суффиксы или формировать заголовок на основе пользовательских полей.
Почему стоит менять автозаголовки постов в WordPress
Иногда стандартного заголовка недостаточно для SEO, пользовательского удобства или визуального оформления. Например, если у вас новостной сайт и вы хотите, чтобы в заголовках автоматически добавлялась дата публикации. Или если вы используете кастомные поля и хотите включить их значения в заголовок.
Изменение автозаголовков помогает:
- Оптимизировать заголовки под поисковые системы;
- Улучшить восприятие контента пользователями;
- Автоматизировать процессы наполнения сайта;
- Добавить уникальность и структуру заголовкам.
Как изменить автозаголовки с помощью хуков WordPress
WordPress предоставляет мощные хуки для изменения данных поста до сохранения. Для изменения заголовка обычно используют фильтр wp_insert_post_data. Он позволяет перехватить данные поста перед записью в базу и модифицировать их.
Пример функции для добавления префикса к заголовку:
function wpcourse_modify_post_title($data, $postarr) {
if ($data['post_type'] === 'post' && !empty($data['post_title'])) {
// Добавляем префикс к заголовку
$data['post_title'] = 'Новость: ' . $data['post_title'];
}
return $data;
}
add_filter('wp_insert_post_data', 'wpcourse_modify_post_title', 10, 2);В этом коде к каждому заголовку поста добавляется префикс «Новость:» при сохранении. Вы можете адаптировать эту логику под свои нужды.
Изменение заголовка с учетом пользовательских полей
Если вам нужно формировать заголовок на базе мета-полей, можно получить их значения из массива $postarr или использовать функцию get_post_meta() внутри фильтра.
function wpcourse_custom_title_with_meta($data, $postarr) {
if ($data['post_type'] === 'post') {
$custom_value = get_post_meta($postarr['ID'], 'wpcourse_subtitle', true);
if ($custom_value) {
$data['post_title'] = $data['post_title'] . ' — ' . $custom_value;
}
}
return $data;
}
add_filter('wp_insert_post_data', 'wpcourse_custom_title_with_meta', 10, 2);Этот код добавляет к заголовку значение из мета-поля wpcourse_subtitle, если оно есть.
Использование плагинов для автоматизации изменения заголовков
Если не хочется писать код, можно использовать плагины с расширенными возможностями. Например, Clearfy Pro позволяет гибко настраивать SEO-заголовки и шаблоны для постов без программирования.
Еще один полезный плагин — WPRemark, который помогает добавлять автоматические подписи и модифицировать содержимое постов, включая заголовки.
Практические советы по изменению автозаголовков
Обработка разных типов постов
Если у вас кастомные типы записей, не забудьте расширить фильтр для них, добавив соответствующие проверки:
if (in_array($data['post_type'], ['post', 'news', 'event'])) {
// логика изменения заголовка
}Это позволит гибко управлять разными типами контента.
Избегайте циклов и конфликтов
При работе с фильтром wp_insert_post_data будьте аккуратны, чтобы не вызвать бесконечный цикл сохранений. Обычно это происходит, если внутри фильтра вызывается сохранение поста.
Лучше просто менять данные и возвращать их без дополнительных операций с базой.
Кэширование и производительность
Если для формирования заголовка нужны тяжелые вычисления или запросы, стоит подумать о кэшировании результата, чтобы не замедлять сохранение поста.
Выводы и рекомендации
Изменение автозаголовков в WordPress — мощный инструмент для настройки сайта под свои задачи. Используйте фильтр wp_insert_post_data для программного управления, подключайте плагины для удобства и следите за производительностью.
Если хотите попробовать готовые решения, посмотрите Clearfy Pro и WPRemark на wpshop.ru.