Skip to main content

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
✔ Без конфликтов