Action wp_head
🔹 Добавление SEO Description
✅ Правильный способ в WordPress (через фильтр)
❌ НЕ делаем echo <meta> в шаблоне
✔ используем wp_head
🧩 Универсальный код (посты, страницы, таксономии)
add_action('wp_head', function () {
$description = '';
// Посты и страницы
if (is_singular()) {
$description = get_field('seo_desc');
}
// Категории и метки
ifelseif (is_category() || is_tag()) {
$term = get_queried_object();
$description = get_field('seo_desc', $term);
}
// Фолбэк — excerpt или описание термина
if (!$description) {
if (is_singular()) {
$description = get_the_excerpt();
}
ifelseif (is_category() || is_tag()) {
$term = get_queried_object();
$description = term_description($term);
}
}
if (!$description) {
return;
}
// Чистим HTML и лишние пробелы
$description = wp_strip_all_tags($description);
$description = trim(preg_replace('/\s+/', ' ', $description));
echo '<meta name="description" content="' . esc_attr($description) . '">' . "\n";
});
🔎 Почему именно так
✔ Работает для:
-
постов
-
страниц
-
категорий
-
меток
✔ Без дублей
✔ Без XSS
✔ Совместимо с темами и плагинами
🎯 Лучшие практики SEO Description
-
120–160 символов (RU)
-
70–155 (моб)
-
уникальный
-
без кавычек
-
не повторять title
-
коммерческий посыл (если уместно)
🧠 Частые ошибки
❌ несколько <meta description>
❌ HTML внутри
❌ слишком длинный текст
❌ одинаковый на всех страницах
🚀 Если нужно улучшить
Можно добавить:
-
seo_desc_enдля EN версии -
авто-обрезку до 160 символов
-
приоритет для главной
-
проверку
noindex -
фильтр
wpseo_metadesc(если используешь Yoast)
✅ Итог
✔ Meta description добавляется через wp_head
✔ Используется ACF
✔ Есть fallback
✔ Без конфликтов