Какие коды нужно добавить в functions.php для настройки SEO

Коды для functions.php для настройки SEO (title, description, h1) без плагинов

Ниже приведены готовые решения для вывода SEO-мета-данных (title, description, h1) на главной, в категориях и записях WordPress через файл functions.php.

1. Мета-тег Description для главной, категорий и записей

Добавьте этот код в functions.php вашей темы:

function custom_meta_description() {
if (is_front_page()) {
// Для главной страницы
echo '<meta name="description" content="' . esc_attr(get_bloginfo('description')) . '">' . "\n";
} elseif (is_category()) {
// Для категории: берём описание категории
$cat = get_queried_object();
$desc = strip_tags(category_description($cat->term_id));
echo '<meta name="description" content="' . esc_attr($desc) . '">' . "\n";
} elseif (is_singular()) {
// Для записи или страницы: используем excerpt или первые 160 символов контента
global $post;
$desc = has_excerpt($post->ID) ? get_the_excerpt($post->ID) : mb_substr(strip_tags($post->post_content), 0, 160, 'UTF-8');
echo '<meta name="description" content="' . esc_attr($desc) . '">' . "\n";
}
}
add_action('wp_head', 'custom_meta_description');

 

Этот код автоматически выводит <meta name="description"> на главной, в категориях и в записях, используя описание сайта, описание категории или excerpt/контент записи

.

2. Title (SEO-заголовок) — если нужен особый вывод

WordPress корректно формирует <title> через функцию wp_get_document_title(). Если хотите переопределять title через произвольные поля, используйте такой код:

function custom_seo_title() {
if (is_singular()) {
$custom_title = get_post_meta(get_the_ID(), 'seo_title', true);
if ($custom_title) {
echo '<title>' . esc_html($custom_title) . '</title>';
return;
}
} elseif (is_category()) {
$cat = get_queried_object();
$custom_title = get_term_meta($cat->term_id, 'seo_title', true);
if ($custom_title) {
echo '<title>' . esc_html($custom_title) . '</title>';
return;
}
} elseif (is_front_page()) {
echo '<title>' . esc_html(get_bloginfo('name')) . ' - ' . esc_html(get_bloginfo('description')) . '</title>';
return;
}
// По умолчанию стандартный title
echo '<title>' . wp_get_document_title() . '</title>';
}
add_action('wp_head', 'custom_seo_title', 1);

Для работы с произвольными полями (seo_title) их нужно добавить вручную в редакторе записи или категории

.

3. H1 для категорий и записей

В шаблоне (например, archive.php или single.php) используйте:

<?php
if (is_category()) {
$cat = get_queried_object();
$h1 = get_term_meta($cat->term_id, 'seo_h1', true);
echo '<h1>' . ($h1 ? esc_html($h1) : single_cat_title('', false)) . '</h1>';
} elseif (is_singular()) {
$h1 = get_post_meta(get_the_ID(), 'seo_h1', true);
echo '<h1>' . ($h1 ? esc_html($h1) : get_the_title()) . '</h1>';
}
?>

Для категорий мета-поля (seo_h1) можно добавить через код в functions.php, используя хуки category_edit_form_fields и edited_category

.

4. Добавление произвольных полей для категорий (пример)

// Поля в админке категории

add_action('category_edit_form_fields', function($term) {
?>
<tr class="form-field">
<th scope="row"><label for="seo_h1">SEO H1</label></th>
<td>
<input name="seo_h1" id="seo_h1" type="text" value="<?php echo esc_attr(get_term_meta($term->term_id, 'seo_h1', true)); ?>">
<p class="description">SEO H1 для категории</p>
</td>
</tr>
<?php
});
add_action('edited_category', function($term_id) {
if (isset($_POST['seo_h1'])) {
update_term_meta($term_id, 'seo_h1', sanitize_text_field($_POST['seo_h1']));
}
});

Этот код добавит поле «SEO H1» в настройках категории в админке

.

Этот код добавит поле «SEO H1» в настройках категории в админке

.

Итог

  • Для description используйте функцию с хуком wp_head и условиями для главной, категорий и записей.

  • Для title можно использовать аналогичный подход с возможностью задавать произвольные значения.

  • Для H1 используйте произвольные поля и выводите их в шаблоне.

  • Все коды добавляются в functions.php вашей темы.

Результат: SEO-мета-данные (title, description, h1) можно задавать и выводить без плагинов, только средствами WordPress и кастомного кода

Related Posts

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