В стандартной установке WordPress заголовок поста задается вручную администратором или редактором. Однако в некоторых случаях необходимо автоматически формировать или изменять заголовок поста при сохранении или публикации. Это может быть полезно для сайтов с большим количеством контента, где заголовок должен содержать определенный шаблон, дату, номер или другую динамическую информацию.
Почему стоит автоматизировать заголовки в WordPress
Автоматическое формирование заголовков позволяет:
- Сэкономить время при создании контента.
- Обеспечить единообразие оформления заголовков.
- Избежать дублирования заголовков.
- Интегрировать полезные данные, например, номер статьи, дату или категорию.
Для реализации этой задачи можно использовать хуки WordPress, а также специализированные плагины, если вы хотите упростить процесс.
Использование хука save_post для автоматической замены заголовка
Хук save_post срабатывает при сохранении или обновлении записи. С его помощью можно изменить заголовок поста программно.
Ниже приведен пример функции wp3_change_post_title, которая автоматически проставляет заголовок в формате «Пост №ID - Дата публикации»:
function wp3_change_post_title($post_id) {
// Проверяем, не является ли это автосохранением
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// Проверяем права пользователя
if (!current_user_can('edit_post', $post_id)) return;
// Получаем объект поста
$post = get_post($post_id);
if ($post->post_type != 'post') return;
// Формируем новый заголовок
$new_title = 'Пост №' . $post_id . ' - ' . date('d.m.Y', strtotime($post->post_date));
// Если заголовок уже такой, ничего не делаем
if ($post->post_title === $new_title) return;
// Обновляем заголовок без генерации бесконечного цикла
remove_action('save_post', 'wp3_change_post_title');
wp_update_post([
'ID' => $post_id,
'post_title' => $new_title
]);
add_action('save_post', 'wp3_change_post_title');
}
add_action('save_post', 'wp3_change_post_title');Эта функция проверяет тип записи, права пользователя, исключает автосохранения и обновляет заголовок при необходимости. Обратите внимание на отключение и повторное включение хука, чтобы избежать бесконечной рекурсии.
Расширение: добавление категории в автозаголовок
Чтобы добавить в заголовок название первой категории, можно немного расширить предыдущий код:
function wp3_change_post_title_with_category($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
$post = get_post($post_id);
if ($post->post_type != 'post') return;
$categories = get_the_category($post_id);
$category_name = !empty($categories) ? $categories[0]->name : 'Без категории';
$new_title = 'Пост №' . $post_id . ' - ' . $category_name . ' - ' . date('d.m.Y', strtotime($post->post_date));
if ($post->post_title === $new_title) return;
remove_action('save_post', 'wp3_change_post_title_with_category');
wp_update_post([
'ID' => $post_id,
'post_title' => $new_title
]);
add_action('save_post', 'wp3_change_post_title_with_category');
}
add_action('save_post', 'wp3_change_post_title_with_category');Такой подход полезен, если важна категоризация контента прямо в заголовке.
Использование плагина Clearfy Pro для автоматизации заголовков
Если вы предпочитаете использовать готовые решения, стоит обратить внимание на плагин Clearfy Pro. Он позволяет оптимизировать и автоматизировать многие аспекты сайта, включая управление заголовками и SEO-настройки.
Clearfy Pro предлагает удобный интерфейс для настройки шаблонов заголовков, что особенно полезно, если вы хотите задать комплексные правила без программирования.
Обработка автозаголовков для кастомных типов записей
Если у вас есть кастомные типы записей, например, портфолио или отзывы, можно адаптировать функцию для них:
function wp3_custom_post_type_title($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
$post = get_post($post_id);
if ($post->post_type != 'portfolio') return; // Замените на ваш тип
$new_title = 'Портфолио #' . $post_id . ' от ' . date('d.m.Y', strtotime($post->post_date));
if ($post->post_title === $new_title) return;
remove_action('save_post', 'wp3_custom_post_type_title');
wp_update_post([
'ID' => $post_id,
'post_title' => $new_title
]);
add_action('save_post', 'wp3_custom_post_type_title');
}
add_action('save_post', 'wp3_custom_post_type_title');Такой код позволяет гибко управлять заголовками для любых типов записей.
Советы по предотвращению проблем с SEO и пользовательским опытом
Автоматическая замена заголовков может повлиять на SEO и удобство пользователей. Чтобы избежать проблем, учитывайте следующие моменты:
- Не изменяйте заголовки уже опубликованных популярных страниц — это может повлиять на индексацию.
- Используйте понятные и информативные шаблоны заголовков.
- Тестируйте изменения на тестовом сайте перед внедрением в продакшен.
- При необходимости добавляйте мета-теги и описания, чтобы сохранить качество SEO.
Итоговые рекомендации
Изменение автозаголовков в WordPress — мощный инструмент для оптимизации рутинных процессов и повышения качества сайта. Используйте хук save_post для реализации кастомных шаблонов заголовков, а для комплексного управления рассмотрите плагин Clearfy Pro. Комбинируя программные решения и готовые инструменты, вы сможете добиться эффективного результата без лишних затрат времени.