# Action wp_head

### 🔹 Добавление SEO Description

#### ✅ Правильный способ в WordPress (через фильтр)

❌ **НЕ** делаем `echo <meta>` в шаблоне  
✔ используем `wp_head`

---

#### 🧩 Универсальный код (посты, страницы, таксономии)

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk--1"><div class="sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>```php
add_action('wp_head', function () {

    $description = '';

    // Посты и страницы
    if (is_singular()) {
        $description = get_field('seo_desc');
    }
    // Категории и метки
    elseif (is_category() || is_tag()) {
        $term = get_queried_object();
        $description = get_field('seo_desc', $term);
    }

    // Фолбэк — excerpt или описание термина
    if (!$description) {
        if (is_singular()) {
            $description = get_the_excerpt();
        }
        elseif (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";

});

```

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk--2"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

#### 🔎 Почему именно так

✔ Работает для:

- постов
- страниц
- категорий
- меток

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