Вставляем код в 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
- Имя:
- Создайте произвольное поле для H1:
- Для мета-описания:
- Создайте произвольное поле:
- Имя:
custom_description
- Значение: Ваш текст описания
- Имя:
- Если поле не заполнено, описание будет сгенерировано автоматически из контента
- Создайте произвольное поле:
Важно:
- Активируйте отображение произвольных полей в интерфейсе через «Настройки экрана» -> «Произвольные поля»
- Для архивных страниц потребуется дополнительная настройка
- Используйте экранирование как в коде для безопасности
- Для многоязычных сайтов потребуется адаптация
Это решение позволяет:
- Использовать разные Title и H1
- Управлять мета-описанием
- Автоматически генерировать недостающие данные
- Работать без плагинов и дополнительных зависимостей