Реализуем различные заголовки Title, H1 и мета-описание в WordPress без плагинов

Реализуем различные заголовки Title, H1 и мета-описание в WordPress без плагинов. Добавьте этот код в файл functions.php вашей темы:

php
Copy
// Кастомный 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) . '">';
    }
}

Инструкция по использованию:

  1. Для кастомного Title:
    • При редактировании записи/страницы создайте произвольное поле:
      • Имя: custom_title
      • Значение: Ваш уникальный заголовок
  2. Для кастомного H1:
    • В шаблоне (например, single.php) замените стандартный вывод:
      php
      Copy
      // Было
      <h1><?php the_title(); ?></h1>
      
      // Стало
      <?php echo custom_h1_output(); ?>
    • Создайте произвольное поле для H1:
      • Имя: custom_h1
      • Значение: Ваш уникальный H1
  3. Для мета-описания:
    • Создайте произвольное поле:
      • Имя: custom_description
      • Значение: Ваш текст описания
    • Если поле не заполнено, описание будет сгенерировано автоматически из контента

Важно:

  • Активируйте отображение произвольных полей в интерфейсе через «Настройки экрана» -> «Произвольные поля»
  • Для архивных страниц потребуется дополнительная настройка
  • Используйте экранирование как в коде для безопасности
  • Для многоязычных сайтов потребуется адаптация

Это решение позволяет:

  • Использовать разные Title и H1
  • Управлять мета-описанием
  • Автоматически генерировать недостающие данные
  • Работать без плагинов и дополнительных зависимостей

Related Posts

Добавить комментарий