- Yoast SEO — что это такое
- Где скачать и как установить плагин Yoast SEO
- Быстрая настройка Yoast SEO
- Полная настройка Yoast SEO
- Dashboard (Рабочий стол)
- General (Общие)
- Features (Возможности)
- Knowledge Graph (О себе)
- Webmaster Tools (Инструменты Вебмастера)
- Yandex Webmaster Tools
- Security (Безопасность)
- Заголовки и метаданные
- Общие
- Домашняя страница
- Типовые решения задач и проблем
- Как включить meta description для Рубрик (Категорий), Меток (Тегов) и других архивов
- Как убрать дублирование названия записи в breadcrumbs (хлебных крошках) WordPress SEO by Yoast
- Как добавить ссылку в breadcrumbs (хлебные крошки) Yoast SEO
- Как убрать Товары WooCommerce из цепочки хлебных крошек Yoast SEO
- Как убрать и отключить JSON-LD от Yoast
- Как в Yoast SEO отключить метатеги OpenGraph
- ОШИБКА: поле http://ogp.me/ns#image отсутствует или пусто
- Как удалить rel prev next из head
- Как включить article:published_time и article:modified_time
- Не работает карта сайта sitemap.xml
- Yoast SEO и Woocommerce
- Yoast или All In One Seo Pack, какой плагин выбрать
- Как импортировать метаданные в Yoast SEO
- Хуки, фильтры Yoast SEO
Yoast SEO — что это такое
Yoast SEO — это плагин WordPress, который настраивает страницы сайта для правильного отображения в поисковых системах. Он поможет:
- избежать проблем и возможных санкций и фильтров со стороны поисковых систем за дубли контента;
- настроит вывод title, meta description и meta keywords;
- создаст карту сайта
sitemap.xml
; - сделает навигационную цепочку «хлебных крошек» (breadcrumbs);
- поможет убрать основу категорий (
/category/
), стоп-слова иreplytocom
из URL комментариев; - настроит редиректы с дочерних страниц медиафайлов на родительские записи;
- и многое другое, полезное для внутренней поисковой оптимизации сайта.
Где скачать и как установить плагин Yoast SEO
Вы можете скачать плагин из официального репозитория WordPress.org, либо перейти в панели администратора в Плагины — Добавить новый (
http://example.com/wp-admin/plugin-install.php
), и в поиске найти Yoast SEO
Быстрая настройка Yoast SEO
Здесь памятка, как быстро настроить Yoast SEO на новом сайте.
Если вы впервые сталкиваетесь с этим плагином, вам что-то может показаться непонятным. В таком случае, предлагаю пропустить этот раздел и перейти ниже — к полной настройке Yoast SEO.
Итак, плагин установлен и активирован. Далее:
- Включаем полный функционал плагина. Для этого, переходим
SEO
—Dashboard
—Feauters
и переводимAdvanced settings pages
вEnabled
, затем вниз и сохраняем изменения. - В сайдбаре появятся новые пункты. Переходим в Заголовки и метаданные (
http://example.com/wp-admin/admin.php?page=wpseo_titles
) - В Заголовки и метаданные проходимся по всем вкладкам и везде удаляем конструкцию
%%page%% %%sep%% %%sitename%%
. Как правило, остаётся только первый шаблон, например%%title%%
. Сохраняем изменения. - Также, в Таксономии(
http://example.com/wp-admin/admin.php?page=wpseo_titles#top#taxonomies
) удаляем слово Архивы из начала каждой строки. Сохраняем изменения. - В последней вкладке Другое (
http://example.com/wp-admin/admin.php?page=wpseo_titles#top#other
) Subpages of archives выставляемdisabled
, сохраняем изменения. - В сайдбаре переходим в XML Карта сайта (
http://example.com/wp-admin/admin.php?page=wpseo_xml
) и XML sitemap functionality включаем (enabled
). Проходимся по всем вкладкам, карту авторов выключаем и следим, чтобы нужные типы записей, страниц и таксономий присутствовали в карте sitemap.xml. Сохраняем изменения. - В сайдбаре переходим в Дополнительно. Включаем навигационную цепочку breadcrumbs, прописываем текст ссылки на главную, в цепочке записи указываем Рубрика. Сохраняем изменения. Чтобы вставить хлебные крошки в шаблон, используем:
<?php if ( !is_front_page() and function_exists('yoast_breadcrumb') ) { yoast_breadcrumb('<div id="breadcrumbs">','</div>'); } ?>
- Во вкладке Постоянные ссылки (
http://example.com/wp-admin/admin.php?page=wpseo_advanced&tab=permalinks
) проставляем:- Strip the category base —
Remove
; - Redirect attachment URLs to parent post URL —
Redirect
; - Remove the ?replytocom variables —
Remove
.
Сохраняем изменения.
- Strip the category base —
Выше был пример быстрой настройки Yoast SEO. Это некая шпаргалка для тех, кто уже не в первый раз настраивает плагин. Если Вы не относитесь к их числу, то далее подробно рассмотрим все настройки.
Полная настройка Yoast SEO
Теперь, когда плагин установлен и активирован, переходим к его настройке. В левом сайдбаре внизу появился отдельный раздел SEO, переходим в него:
http://example.com/wp-admin/admin.php?page=wpseo_dashboard
Внутри нам покажут несколько разделов:
- Dashboard
- Общие
- Features
- О себе
- Инструменты вебмастера
- Безопасность
Все эти пункты рассмотрим подробно.
Dashboard (Рабочий стол)
Dashboard или Рабочий стол. Здесь отображаются различные сообщения и уведомления, на которые стоит обращать внимание.
Например, на скрине выше мы видим 1 проблему (установлено название сайта по умолчанию, надо прописать своё) и 2 уведомления (предложения воспользоваться конфигуратором плагина и подключить сайт к Google Search Console). Мы только что установили плагин, и можно воспользоваться конфигуратором, но его будет недостаточно для полной настройки, поэтому я пропущу его и перейду непосредственно к обзору плагина и его тонкой настройке.
General (Общие)
Второй раздел, в который можно попасть по адресу http://example.com/wp-admin/admin.php?page=wpseo_dashboard#top#general
В нём расположен следующий функционал:
- Configuration wizard — здесь расположен конфигуратор, которым можно воспользоваться, чтобы в несколько этапов предварительно настроить плагин. Можно его пропустить;
- О создателях — информация о создателях плагина;
- Restore default settings — тут можно сбросить настройки плагина на первоначальные, если что-то пошло не так.
Features (Возможности)
Третий раздел — Features (Возможности). Доступен по адресу http://example.com/wp-admin/admin.php?page=wpseo_dashboard#top#features
.
- Advanced settings pages — включить (
enabled
). Во включенном состоянии активируются основные возможности плагина (установка шаблонаmeta title
(заголовков) иmeta description
(описания),sitemap.xml
,breadcrumbs
), которые нам нужны, и многое другое.
При включении (enabled
) и сохранении, посмотрите в сайдбар слева, там появятся новые пункты меню, которые обсудим далее - OnPage.org — включить, если пользуетесь сервисом мониторинга onpage.org. Включает проверку сайта ботами данного сервиса. Будет отсылать уведомления о недоступности сайта. Можно попробовать воспользоваться, это бесплатно для 1 проекта. Впрочем, это совсем не обязательно, особенно если вы не собираетесь пользоваться
OnPage.org
. А мониторить доступность сайта на WordPress можно и с помощью Host Tracker, Яндекс Метрики или плагина JetPack. - Admin bar menu — включить, если хотите видеть уведомления от Yoast SEO в админтулбаре
Knowledge Graph (О себе)
Четвёртый раздел — Knowledge Graph (О себе
). Доступен по адресу http://example.com/wp-admin/admin.php?page=wpseo_dashboard#top#knowledge-graph
.
- Название сайта — тут можно прописать данные, которые могут отображаться в результатах поисковой выдачи Google как данные сайта.
Если вы заглянете в исходный код любой страницы сайта, то увидите следующее:У нас прописано название сайта: «Название моего сайта» и «Описание моего сайта». А в коде это будет отображаться в формате
<script type='application/ld+json'>{"@context":"http:\/\/schema.org","@type":"WebSite","@id":"#website","url":"http:\/\/1.wp\/","name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430","alternateName":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430","potentialAction":{"@type":"SearchAction","target":"http:\/\/1.wp\/?s={search_term_string}","query-input":"required name=search_term_string"}}</script>
name
иalternateName
— тут и выводятся данные по названию сайта, . Google будет использовать их для своего Knowledge Graph - Компания или Частное лицо — отметьте ваш вариант.
Если выбрать частное лицо и заполнить имя, то это имя будет прописано вapplication/js+json
<script type='application/ld+json'>{"@context":"http:\/\/schema.org","@type":"Person","url":"http:\/\/example.com\/","sameAs":[],"@id":"#person","name":"Myname"}</script>
Здесь
Myname
— это имя частного лица, будет использоваться Ваше.Если выбрать компанию и ввести её данные, то данные будут отображаться примерно так:
<script type='application/ld+json'>{"@context":"http:\/\/schema.org","@type":"Organization","url":"http:\/\/example.com\/","sameAs":[],"@id":"#organization","name":"Google","logo":"https:\/\/google.com\/logo.png"}</script>
Тут я для примера привёл компанию Google и её лого. Вы, опять же, вводите свои.
Зачем это всё нужно? Google будет использовать их для своего Knowledge Graph.
А также, он может использовать эти данные в поисковой выдаче:
Webmaster Tools (Инструменты Вебмастера)
Раздел находится по адресу http://example.com/wp-admin/admin.php?page=wpseo_dashboard#top#webmaster-tools
.
В этом разделе вы можете быстро подтвердить право на владение доменом в панелях Google Webmasters
и Яндекс Вебмастер
.
Если вы уже подтвердили право владения доменом, пропускайте этот раздел.
Google Search Console
Чтобы подтвердить право владения доменом example.com
в Google Search Console
:
- Переходим по ссылке: https://www.google.com/webmasters/verification/verification?hl=ru&siteUrl=http%3A%2F%2Fexample.com/
- Выбираем
Альтернативные способы
- Отмечаем
Тег HTML
- Выделяем и копируем строку
- Возвращаемся в панель Yoast SEO и вводим скопированную строку в соответствующее поле, сохраняем изменения
- Возвращаемся в панель Google Search Tools и подтверждаем право владения доменом
Yandex Webmaster Tools
Чтобы подтвердить право владения доменом example.com
в Yandex Webmaster Tools
:
- Если сайт не зарегистрирован в панели, добавим сайт
- Если сайт зарегистрирован в панели, подтверждаем право владения им
- Выбираем
Мета-тег
- Выделяем и копируем строку
<meta name="yandex-verification" content="9d165569f5534721" />
- Возвращаемся в панель Yoast SEO и вводим скопированную строку в соответствующее поле, сохраняем изменения
- Возвращаемся в Яндекс Вебмастер и подтверждаем право владения доменом
Security (Безопасность)
Раздел содержит только одну функцию: Security setting
, и находится по адресу http://example.com/wp-admin/admin.php?page=wpseo_dashboard#top#security
По умолчанию (disabled
), метабокс Yoast SEO в каждой записи не позволяет авторам изменять для записей права на просмотр поисковыми роботами (meta name robots noindex
), а также переопределить каноническую ссылку (link rel canonical
). Поэтому, если вы доверяете авторам, вы можете включить (enabled
) возможность изменять эти жизненно важные вышеуказанные параметры в записях всем, а не только администраторам сайта. Иначе оставьте всё так, как есть по умолчанию — disabled
Заголовки и метаданные
Этот раздел отвечает за то, как в коде в секции head
отображаются теги <title>
, <meta name="description" content="">
и <meta name="keywords" content="">
Сразу расскажу про переменные шаблонов, которые используются в этом разделе. Переменные в Yoast SEO выглядят как определённое слово, обёрнутое в двойные знаки процентов. Если Yoast видит такую переменную у себя в метабоксе, он заменит её на определённое значение, взяв его из настроек или данных сайта.
Чтобы для Записей отображался
meta desciption
, пропишите в поле Мета описание тег%%excerpt%%
Например, %%sitename%%
будет заменёна на название сайта, определённое в настройках, %%sitedesc%%
на описание сайта, %%title%%
— на название записи или страницы, и так далее. Ниже полный перечень переменных с их описаниями:
- %%sitename%% — обозначает название сайта. Определяется в настройках сайта
- %%sitedesc%% — описание сайта. Определяется там же
- %%date%% — дата публикации записи или страницы
- %%title%% — заголовок записи или страницы
- %%parent_title%% — заголовок родительской страницы
- %%excerpt%% — короткое описание записи или страницы. Если не существует, будет сгенерировано автоматически
- %%excerpt_only%% — короткое описание записи или страницы. Если не существует, ничего не выведет
- %%tag%% — текущая метка/метки (теги)
- %%category%% — рубрика (категория) или список рубрик (категорий), разделённых запятой
- %%primary_category%% — главная рубрика (категория)
- %%category_description%% — описание рубрики
- %%tag_description%% — описание метки (тега)
- %%term_title%% — заголовок произвольного термина
- %%term_description%% — описание произвольного термина
- %%searchphrase%% — текущая поисковая фраза
- %%sep%% — разделитель, который определяется в следующем пункте, и который присутствует в
wp_title()
Наверное, вы понимаете, что некоторые переменные могут работать только на определённых, соответствующих им страницах.
Вышеуказанных переменных обычно хватает с запасом. Однако, существуют и продвинутые варианты:
- %%pt_single%% — тип записи в единственном числе (запись, страница, продукт, если есть)
- %%pt_plural%% — тип записи во множественном числе (записи, страницы, продукты, если есть)
- %%modified%% — дата модификации записи или страницы
- %%id%% — уникальный идентификационный номер (Post ID) записи или страницы
- %%name%% — имя автора записи или страницы (
Nicename
) - %%userid%% — уникальный идентификационный номер автора записи или страницы (
Author's ID
) - %%currenttime%% — текущее время
- %%currentdate%% — текущая дата
- %%currentday%% — текущий день
- %%currentmonth%% — текущий месяц
- %%currentyear%% — текущий год
- %%page%% — строка текущей страницы в пагинации (например,
страница 2 из 4
) - %%pagetotal%% — общее число страниц в пагинации
- %%pagenumber%% — номер текущей страницы в пагинации (
число
) - %%caption%% — описание вложения, прикрепления (
аттачмента
, например, изображения) - %%focuskw%% — фокусная ключевая фраза записи
- %%term404%% — термин страницы с ошибкой 404 (
такой страницы не существует
) - %%cf_имя_метаполя_записи%% — значение произвольного метаполя записи (
post_meta
) - %%ct_имя_произвольной_таксономии_записи%% — произвольные таксономии записи, через запятую
Пример для WooCommerce:
Чтобы прописать в шаблон заголовка title страницы атрибут товара, можно создать атрибут со слагом (ярлыком)atribut
, а затем воспользоваться следующей переменной:
%%ct_pa_atribut%%
В результате, в исходном коде любого товара можно будет увидеть значение атрибута
- %%ct_desc_имя_произвольной_таксономии_записи%% — описание произвольной таксономии записи
Общие
Располагается по адресу http://example.com/wp-admin/admin.php?page=wpseo_titles#top#general
- Разделитель для заголовка — тут можно выбрать символ, который будет служить разделителем в заголовке вместо переменной
%%sep%%
Enabled analysis
- Readability analysis — можно включить или отключить анализатор текста
- Keyword analysis — включает и отключает анализатор вхождения ключевой фразы в заголовки и текст
С переменными вы уже знакомы (описание выше), поэтому дальше буду давать примеры шаблонов, которые я обычно ставлю.
Домашняя страница
Отвечает за то, что отображается в title и description на главной странице. Располагается в http://example.com/wp-admin/admin.php?page=wpseo_titles#top#home
Здесь по умолчанию установлен набор %%sitename%% %%page%% %%sep%% %%sitedesc%%
.
По идее, достаточно будет оставить %%sitename%%
или %%sitename%% %%page%%
. Вы меняете на своё усмотрение.
Типовые решения задач и проблем
В этом разделе собраны типовые задачи и проблемы, с которыми приходится сталкиваться при использовании Yoast SEO.
Как включить meta description для Рубрик (Категорий), Меток (Тегов) и других архивов
Это решение подойдёт в том случае, когда заполнены описания архивов (рубрик, меток и других), и нужно, чтобы эти описания выводились в meta description
:
/** * Включаем meta description для Рубрик (Категорий) и других архивов * https://sheensay.ru/yoast */ add_filter( 'wpseo_metadesc', function ( $wpseo_metadesc ) { if ( is_archive() // Можно заменить на is_category(), чтобы работать только с Рубриками and empty( $wpseo_metadesc ) and ! empty( $description = get_queried_object() -> description ) ) { $wpseo_metadesc = $description; } return $wpseo_metadesc; } );
Как убрать дублирование названия записи в breadcrumbs (хлебных крошках) WordPress SEO by Yoast
Код ниже удалит дублирующееся название статьи в хлебных крошках (последнее звено в цепочке), оставим только ссылки на верхние уровни (то есть, было Главная > Рубрика > Запись
, стало Главная > Рубрика
):
add_filter('wpseo_breadcrumb_single_link', 'remove_wpseo_breadcrumb_last' ); function remove_wpseo_breadcrumb_last( $link_output) { if( FALSE !== strpos( $link_output, 'breadcrumb_last' ) ) { $link_output = ''; } return $link_output; }
Как добавить ссылку в breadcrumbs (хлебные крошки) Yoast SEO
Удобнее всего манипулировать breadcrumbs с помощью фильтра wpseo_breadcrumb_links
. В примере ниже показано, как можно добавить дополнительную ссылку со страниц произвольной таксономии products_type
:
add_filter( 'wpseo_breadcrumb_links', function ( $links ) { if ( is_tax( 'products_type' ) ) { // Добавляем элемент в ассоциативный массив ссылок array_splice( $links, $offset = 1, $length = 0, [ [ 'text' => 'Текст ссылки', 'url' => 'Адрес ссылки', 'allow_html' => '1', ] ] ); } return $links; }, 10, 2 );
Как убрать Товары WooCommerce из цепочки хлебных крошек Yoast SEO
add_filter( 'wpseo_breadcrumb_links', 'sheens_wpseo_breadcrumb_output' ); function sheens_wpseo_breadcrumb_output( $output ){ if ( 'product' == $output[1]['ptarchive'] ) { unset( $output[1] ); $output = array_values( $output ); } return $output; }
Как убрать и отключить JSON-LD от Yoast
// Полностью отключаем вывод JSON-LD в Yoast SEO add_filter( 'wpseo_json_ld_output', '__return_empty_array' );
Также, порой возникает потребность отключить Google SearchBox для сайта
SearchBox в результатах поиска выглядит как на скрине:
В WordPress обычно прописывается http://example.com/?s={Поисковый_запрос}
. Если на сайте стандартный вид поиска отключен, то стоит также отключить его и в JSON-LD:
// Отключаем Yoast SearchBox для Google add_filter( 'disable_wpseo_json_ld_search', '__return_true' );
Либо, можно изменить существующий адрес для поиска, например http://example.com/?search
:
// Изменяем поисковую строку Yoast SEO add_filter('wpseo_json_ld_search_url', function () { return 'http://example.com/?search={search_term_string}'; } );
Как в Yoast SEO отключить метатеги OpenGraph
Чтобы отключить метаданные Open Graph, можно зайти в панель администратора: SEO — Социальные сети — Facebook, и переключить ползунок OpenGraph
Чтобы отключить Open Graph через хуки, можно воспользоваться следующим кодом:
add_action('wp_head', 'remove_all_wpseo_og', 1); function remove_all_wpseo_og() { remove_action( 'wpseo_head', array( $GLOBALS['wpseo_og'], 'opengraph' ), 30 ); }
Чтобы отключить конкретные элементы OpenGraph, можно воспользоваться следующими фильтрами:
add_filter('wpseo_opengraph_url' , '__return_false' ); add_filter('wpseo_opengraph_desc', '__return_false' ); add_filter('wpseo_opengraph_title', '__return_false' ); add_filter('wpseo_opengraph_type', '__return_false' ); add_filter('wpseo_opengraph_site_name', '__return_false' );
ОШИБКА: поле http://ogp.me/ns#image отсутствует или пусто
Если при проверка сайта в валидаторе микроразметки возникает ошибка ОШИБКА: поле http://ogp.me/ns#image отсутствует или пусто, значит, Вы не указали дефолтное изображение в настройках плагина: Yoast
— Социальные сети
— Facebook
, и указываете любое изображение, которое будет показываться в соцсетях при шаринге страниц, не имеющих миниатюр.
Как удалить rel prev next из head
/** * Yoast: Удаляем Prev Next для архивов */ add_filter( 'wpseo_prev_rel_link', '__return_false' ); add_filter( 'wpseo_next_rel_link', '__return_false' ); // Редиректим /page/2, /page/3 и т.д. на основную первую страницу рубрики (категории) add_action( 'pre_get_posts', function ( $query ) { // Если находимся на странице архивов, на странице пагинации 2 и выше, а также существует имя рубрики if ( $query -> is_archive && $query -> query['paged'] > 1 && $query -> query['category_name'] ) { // Редиректим на основную страницу рубрики wp_redirect( site_url( $query -> query['category_name'] ), 301 ); exit; } } );
Как включить article:published_time и article:modified_time
По умолчанию, в Yoast в Open Graph дата публикации и дата модификации отображается только для Записей. Чтобы включить их для других произвольных типов записей или страниц, можно воспользоваться следующим кодом:
// Дата публикации и дата модификации для страниц add_filter( 'wpseo_opengraph_show_publish_date', function () { if ( is_singular( 'page' ) ) return true; return false; });
А следующим кодом мы сможем включить отображение article:published_time
и article:modified_time
вообще для чего угодно:
add_filter( 'wpseo_opengraph_show_publish_date', '__return_true' );
Если требуется отключить article:published_time
и article:modified_time
везде:
add_filter( 'wpseo_opengraph_show_publish_date', '__return_false' );
Не работает карта сайта sitemap.xml
Зачастую проблема в NGINX — он просто не настроен верным образом, чтобы карта сайта sitemap.xml
генерировалась. Чтобы исправить дело, нужно отредактировать необходимый блок с конфигурацией конкретного сайта, добавив в секцию server{}
следующую инструкцию:
#Yoast SEO sitemap.xml # https://sheensay.ru/?p=2205 location ~ ([^/]*)sitemap(.*).x(m|s)l$ { ## this rewrites sitemap.xml to /sitemap_index.xml rewrite ^/sitemap.xml$ /sitemap_index.xml permanent; ## this makes the XML sitemaps work rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?yoast-sitemap-xsl=$1 last; rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last; rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; ## The following lines are optional for the premium extensions ## News SEO rewrite ^/news-sitemap.xml$ /index.php?sitemap=wpseo_news last; ## Local SEO rewrite ^/locations.kml$ /index.php?sitemap=wpseo_local_kml last; rewrite ^/geo-sitemap.xml$ /index.php?sitemap=wpseo_local last; ## Video SEO rewrite ^/video-sitemap.xsl$ /index.php?yoast-sitemap-xsl=video last; }
Yoast SEO и Woocommerce
Для WooCommerce есть специальный платный плагин, описание доступно по адресу https://yoast.com/wordpress/plugins/yoast-woocommerce-seo/. На данный момент, стоит $49
.
Помимо стандартных фишек Yoast SEO, он позволяет:
- Увеличить число шарингов в Pinterest
- Использовать хлебные крошки (breadcrumbs) от Yoast взамен стандартных WooCommerce
- Гарантирует отличную совместную работу Yoast SEO и WooCommerce
- Удаляет ненужные страницы из карты сайта
sitemap.xml
и отдаёт приоритет индексации нужным страницам
Yoast или All In One Seo Pack, какой плагин выбрать
Я бы однозначно выбрал Yoast SEO, так как он содержит в себе всё, что нужно, чего нет в All In One Seo Pack
, и что нужно добирать сторонними плагинами:
- Карту сайта sitemap.xml;
- Удалить
/category/
из URL; - Хлебные крошки Breadcrumbs.
Как импортировать метаданные в Yoast SEO
Допустим, Вы переносите сайт со старого движка на WordPress. Также, допустим, у нас в базе данных есть таблица articles
, в которой есть столбцы с нужными нам данными: столбцы meta_title
, meta_description
и meta_keywords
. Также, допустим, что в таблице articles
есть столбец ID
, который соответствует ID
поста в базе данных WordPress.
Если вам нужно массово прописать метаданные Yoast SEO для своих статей, можно воспользоваться следующим кодом. Его можно прописать в functions.php или создать MU Плагин WordPress.
add_action( 'admin_action_sheensay_import_yoast_meta', function() { current_user_can( 'manage_options' ) or exit; // Только администратор сможет сделать запрос global $wpdb; // Создаём запрос в базу данных $sql = "SELECT articles.meta_title, articles.meta_description, articles.meta_keywords, articles.ID, wp_posts.ID FROM articles " . " INNER JOIN wp_posts " . " ON articles.ID = wp_posts.ID " . " AND wp_posts.post_type = 'post' " . " LIMIT 0, 10"; $rows = $wpdb->get_results( $sql ); exit( print_r( $rows ) ); // Выводим результат запроса в базу данных. Чтобы произвести импорт, надо закомментировать или удалить строку foreach ( $rows as $row ) { update_post_meta( $row->ID, '_yoast_wpseo_title', $row->meta_title ); // Пишем meta title update_post_meta( $row->ID, '_yoast_wpseo_metadesc', $row->meta_description ); // Пишем meta description update_post_meta( $row->ID, '_yoast_wpseo_metakeywords', $row->meta_keywords ); // Пишем meta keywords } printf( "Импортировано %d позиций.<br>", count( $rows ) ); exit; } );
Теперь можно открыть URL http://example.com/wp-admin/admin.php?action=sheensay_import_yoast_meta
, увидите результат запроса. Попробуйте стереть из $sql
ограничение LIMIT 0, 10"
или увеличить его, например, LIMIT 0, 1000
, затем проверьте результат, перезагрузив страницу.
LIMIT 0, 1000
означает «выбрать 1000 записей, начиная с 0 позиции». Так можно разбить импорт на порции. Следующие будут:
LIMIT 0, 1000
LIMIT 1000, 1000
LIMIT 2000, 1000
- и так далее до конца
Убедившись, что запрос выдаёт нужные данные, закомментируйте или удалите строку exit( print_r( $rows ) );
, затем перезагрузите страницу. Увидите, сколько строк импортировано.
Если данных слишком много, скрипт может завершиться с ошибкой, ему просто может не хватить времени на исполнение. В этом случае, попробуйте либо увеличить максимальное время исполнения PHP, либо увеличить время ожидания NGINX.
Если время исполнения увеличить нельзя, попробуйте скармливать данные порциями, меняя ограничение: например,LIMIT 0,100
первая итерация,LIMIT 100,100
вторая,LIMIT 200,100
третья, и так далее.
Хуки, фильтры Yoast SEO
- wpseo_robots
- Отвечает за вывод
<meta name="robots" content="noindex, nofollow">
// Пример, в котором мы закрываем от индексации страницы дней архивов add_filter( 'wpseo_robots', function ($robots) { if ( is_day() ) { $robots = "noindex, follow"; } return $robots; } );
Свежие комментарии