Как вывести Meta Description под Meta Title в ACF в WC?
Сейчас вывел в head ACF свой дескрипшн. Но он далеко от meta title, какой хук, экшн или фильтр использовать, чтобы разместить под meta title?
/** Meta Desc - страницы товара */ add_action( 'wp_head', 'head_seo_meta_desc' ); function head_seo_meta_desc(){ if (is_product()) { $info = get_field( 'wc_description' ); // get custom field echo '<meta name="description" content="' . $info . '">'; // echo it out } else { echo '<meta name="description" content="Описания нет">'; // echo it out } } |
/** Meta Desc - страницы товара */ add_action( 'wp_head', 'head_seo_meta_desc' ); function head_seo_meta_desc(){ if (is_product()) { $info = get_field( 'wc_description' ); // get custom field echo '<meta name="description" content="' . $info . '">'; // echo it out } else { echo '<meta name="description" content="Описания нет">'; // echo it out } }
Дополнительно:
Ответы:
Разобрался. Сортировку можно выставить в конце экшена)
add_action( 'wp_head', 'head_seo_meta_desc', 1 );
Выводится почти под title
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Технически порядок meta-тегов внутри
headобычно не критичен: браузеру и поисковику не важно, стоит description сразу под title или несколькими строками ниже. Но если нужно управлять порядком вывода, уwp_headесть приоритет. Чем меньше число, тем раньше выполнится функция.Ваш пример можно оформить безопаснее:
add_action('wp_head', 'head_seo_meta_desc', 1); function head_seo_meta_desc() { if (!is_product()) { return; } $info = get_field('wc_description'); if (!$info) { return; } echo '<meta name="description" content="' . esc_attr($info) . '">' . "n"; }
Обязательно используйте
esc_attr(), потому что description попадает в HTML-атрибут. Без экранирования кавычки и спецсимволы могут сломать разметку.Но важнее другое: если на сайте установлен Yoast, Rank Math или другой SEO-плагин, не нужно параллельно выводить свой
meta name="description". Получится два description, и это хуже, чем “не под title”. В таком случае лучше отдавать значение в фильтр SEO-плагина.Для Yoast:
add_filter('wpseo_metadesc', function ($desc) { if (is_product()) { $custom = get_field('wc_description'); return $custom ?: $desc; } return $desc; });
Так description будет один, в правильном месте и без конфликта с SEO-плагином.
Отдельно проверьте исходный код страницы после правки. На товаре должен быть один тег
meta name="description". Если их два, поисковик сам выберет, какой учитывать, а результат может отличаться от ожидаемого. Также не выводите “Описания нет” как meta description для всех остальных страниц: это создаст массовые дубли. Для страниц без своего описания лучше вообще ничего не добавлять и дать SEO-плагину сформировать fallback.