Реализуем различные заголовки Title, H1 и мета-описание в WordPress без плагинов. Добавьте этот код в файл functions.php
вашей темы:
// Кастомный Title add_filter('document_title_parts', 'custom_document_title'); function custom_document_title($title) { if (is_singular()) { $custom_title = get_post_meta(get_the_ID(), 'custom_title', true); if (!empty($custom_title)) { $title['title'] = $custom_title; } } return $title; } // Кастомный H1 (вставьте в шаблон, например single.php) function custom_h1_output() { $custom_h1 = get_post_meta(get_the_ID(), 'custom_h1', true); $output = !empty($custom_h1) ? $custom_h1 : get_the_title(); return '<h1>' . esc_html($output) . '</h1>'; } // Мета-описание add_action('wp_head', 'custom_meta_description'); function custom_meta_description() { if (is_singular()) { $custom_desc = get_post_meta(get_the_ID(), 'custom_description', true); if (empty($custom_desc)) { $content = get_the_content(); $content = wp_strip_all_tags($content); $content = preg_replace('/\s+/', ' ', $content); if (mb_strlen($content) > 160) { $custom_desc = mb_substr($content, 0, 160); $last_space = mb_strrpos($custom_desc, ' '); $custom_desc = mb_substr($custom_desc, 0, $last_space) . '...'; } else { $custom_desc = $content; } } echo '<meta name="description" content="' . esc_attr($custom_desc) . '">'; } }
Инструкция по использованию:
- Для кастомного Title:
- При редактировании записи/страницы создайте произвольное поле:
- Имя:
custom_title
- Значение: Ваш уникальный заголовок
- Имя:
- При редактировании записи/страницы создайте произвольное поле:
- Для кастомного H1:
- В шаблоне (например,
single.php
) замените стандартный вывод:// Было <h1><?php the_title(); ?></h1> // Стало <?php echo custom_h1_output(); ?>
- Создайте произвольное поле для H1:
- Имя:
custom_h1
- Значение: Ваш уникальный H1
- Имя:
- В шаблоне (например,
- Для мета-описания:
- Создайте произвольное поле:
- Имя:
custom_description
- Значение: Ваш текст описания
- Имя:
- Если поле не заполнено, описание будет сгенерировано автоматически из контента
- Создайте произвольное поле:
Важно:
- Активируйте отображение произвольных полей в интерфейсе через «Настройки экрана» -> «Произвольные поля»
- Для архивных страниц потребуется дополнительная настройка
- Используйте экранирование как в коде для безопасности
- Для многоязычных сайтов потребуется адаптация
Это решение позволяет:
- Использовать разные Title и H1
- Управлять мета-описанием
- Автоматически генерировать недостающие данные
- Работать без плагинов и дополнительных зависимостей