Диагностика проблемы с метаданными Yoast SEO на отдельных страницах
Часто возникает задача: нужно изменить или полностью удалить метатеги, которые генерирует плагин Yoast SEO на определённых страницах сайта WordPress. Например, для страниц с конфиденциальной информацией или лендингов. По умолчанию Yoast SEO автоматически генерирует title, description и Open Graph теги, которые не всегда подходят для всех страниц.
Проверить, что метаданные именно от Yoast SEO, можно через исходный код страницы в браузере (Ctrl+U) или через инструменты разработчика. Найдите теги <meta name="description">, <title> и Open Graph — они обычно содержат комментарии или структуру, характерную для Yoast SEO.
Пошаговое решение: удаление или изменение метаданных на конкретных страницах
1. Удаление метаданных Yoast SEO для конкретной страницы
Для удаления метаданных Yoast SEO на отдельных страницах можно использовать фильтр wpseo_frontend_presenter_classes и убрать соответствующие классы, которые отвечают за вывод метатегов.
Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:
function disable_yoast_meta_on_specific_pages( $presenters ) {
if ( is_page( array(42, 'privacy-policy') ) ) { // ID и/или слаг страницы
$to_remove = [
'WPSEO\Frontend\Presenters\Title',
'WPSEO\Frontend\Presenters\Meta_Description',
'WPSEO\Frontend\Presenters\Open_Graph',
'WPSEO\Frontend\Presenters\Twitter_Cards',
];
foreach ( $presenters as $key => $presenter ) {
if ( in_array( get_class( $presenter ), $to_remove, true ) ) {
unset( $presenters[ $key ] );
}
}
}
return $presenters;
}
add_filter( 'wpseo_frontend_presenter_classes', 'disable_yoast_meta_on_specific_pages' );В этом примере метаданные Yoast SEO отключены для страницы с ID 42 и слагом privacy-policy.
2. Изменение метаописания или заголовка Yoast SEO программно
Если требуется программно изменить title или description для конкретной страницы, используйте фильтры wpseo_title и wpseo_metadesc соответственно.
function custom_yoast_title( $title ) {
if ( is_page( 'special-offer' ) ) {
return 'Уникальный заголовок для специального предложения';
}
return $title;
}
add_filter( 'wpseo_title', 'custom_yoast_title' );
function custom_yoast_description( $description ) {
if ( is_page( 'special-offer' ) ) {
return 'Уникальное описание для страницы специального предложения, улучшенное для SEO.';
}
return $description;
}
add_filter( 'wpseo_metadesc', 'custom_yoast_description' );Проверка результата после внедрения
- Откройте страницу, для которой применяли изменения.
- Проверьте исходный код страницы в браузере (
Ctrl+Uили «Просмотреть исходный код»). - Убедитесь, что теги
<title>и<meta name="description">соответствуют вашим изменениям или отсутствуют, если метаданные удалены. - Для проверки Open Graph и Twitter-карт можно использовать Facebook Sharing Debugger и Twitter Card Validator.
Частые ошибки и как их исправить
- Изменения не применяются. Проверьте, что код добавлен в активную тему или плагин и что кеш плагинов/сервера очищен.
- Использование неправильных условий в
is_page(). Для страниц используйте ID или слаг страницы, убедитесь, что условие правильно срабатывает, добавивvar_dump(is_page(...))в отладке. - Конфликты с другими SEO-плагинами. Если установлен другой SEO-плагин, он может переопределять метаданные. В этом случае отключите конфликтующий плагин или расширьте условия фильтра.
- Удаление метаданных ломает структуру страницы. Удаляйте только нужные метаданные, не удаляйте весь
<head>или важные скрипты.
Практические советы по оптимизации и безопасности
- Не отключайте метаданные на всех страницах сайта, это ухудшит SEO.
- Для динамических страниц используйте условия на основе шаблонов или query vars для более гибкого контроля.
- Используйте объектный кэш и очистку кеша после внесения изменений в SEO-метаданные, чтобы изменения сразу были видны.
- Для безопасности не выводите в метаданных пользовательский ввод без фильтрации.
Сравнение способов управления метаданными Yoast SEO
| Метод | Преимущества | Недостатки | Когда использовать |
|---|---|---|---|
Отключение метаданных через фильтр wpseo_frontend_presenter_classes | Полное удаление метаданных, контроль на уровне классов | Сложнее в настройке, требует понимания внутренней структуры Yoast | Когда нужно убрать все SEO-метаданные с конкретной страницы |
Изменение метаданных через фильтры wpseo_title и wpseo_metadesc | Гибкость, простота реализации | Не удаляет метаданные, а только изменяет содержимое | Когда нужно настроить уникальные заголовки и описания |
| Использование интерфейса Yoast SEO в админке | Удобно для редактирования отдельных страниц вручную | Не подходит для массовых изменений или динамических условий | Когда нужно изменить метаданные на ограниченном числе страниц вручную |