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

Вставляем код в function.php

/**********************/

/*
* ajax
*/

add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() {

wp_deregister_script( 'jquery-core' );
wp_register_script( 'jquery-core', '//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js');
wp_enqueue_script( 'jquery' );
}

/*
* Remove site name from title
*/
add_filter( 'document_title_parts', 'cody_remove_title' );
function cody_remove_title( $title ){
// вы можете задать свои условия, где выводить, а где оставить название
if ( !is_feed() AND !is_home() ) {
$title['site'] = 'molokozavod.com';
} else {$title['tagline'] = '';}
return $title;
}

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

if (is_category()){
$a = category_description();
if ( ! empty( $a ) ) { $meta = $a; }
}
if (is_front_page()){
$meta = get_bloginfo( 'description' );
}

$meta = strip_shortcodes($meta);
$meta = preg_replace( '~\[[^\]]+\]~', '', $meta );
$meta = wp_strip_all_tags($meta, true);
$meta = str_replace('"','\'', $meta);
if ( mb_strlen ( $meta ) > 160 ){ $meta = mb_substr($meta, 0, 160)."..."; }
echo "\n<meta name=\"description\" content=\"$meta\" />\n";

}

}

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

Для кастомного Title:

При редактировании записи/страницы создайте произвольное поле:
Имя: custom_title         Значение: Ваш уникальный заголовок

Для кастомного H1:
В шаблоне (например, single.php) замените стандартный вывод

 

// Было
<h1><?php the_title(); ?></h1>

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

Важно:

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

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

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

Related Posts

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