Yoast формирует тег <title>
и мета-тег og:title
по шаблону %%title%% %%page%% %%sep%% %%sitename%%
.
- title — заголовок
- page — номер страницы (для страниц с пагинацией)
- sep — разделитель
- sitename — название сайта
Например, для этой страницы, будет сформирован заголовок:
Как сделать правильную html-разметку хлебных крошек Yoast | Zolin Digital
Но иногда вам может понадобиться вывести дополнительный текст, а для этого нужно создать свою переменную для шаблона. Рассмотрим пример:
// define the custom replacement callback
function get_seo_before_title() {
if ( is_archive() ) {
if ( is_archive( 'nations' ) ) {
return 'Спортсмены и атлеты страны ';
}
}
}
// define the custom replacement callback
function get_seo_after_title() {
if ( is_tax( 'competitions' ) ) {
return ' — расписание и результаты';
}
if ( is_single() ) {
if ( get_post_type() === 'athlete' ) {
return ' — биография, статистика, новости, результаты, инстаграм';
}
}
}
// %%BeforeTitle%% %%title%% %%AfterTitle%%
// %%BeforeTitle%% %%term_title%% %%AfterTitle%%
// define the action for register yoast_variable replacments
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%BeforeTitle%%', 'get_seo_before_title', 'advanced', 'Some before title text' );
wpseo_register_var_replacement( '%%AfterTitle%%', 'get_seo_after_title', 'advanced', 'Some after title text' );
}
// Add action
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
Итак, в этой функции мы определяем две переменные — %%BeforeTitle%%
и %%AfterTitle%%
, которые по задумке будем использовать при формировании всех заголовков.
Чтобы это работало, нужно перейти в настройки Yoast SEO → Отображение в поисковой выдаче, во вкладке Типы содержимого изменить все шаблоны на %%BeforeTitle%% %%title%% %%AfterTitle%%
, а в Таксономии на %%BeforeTitle%% %%term_title%% %%AfterTitle%%
.
Теперь переменные будут формировать некоторый текст до и после основного заголовка в зависимости от содержимого.
Переменная $post
в этот момент определена, поэтому можно использовать функции вида get_the_title()
, get_post_meta(get_the_id(), 'example')
, get_comments_number()
и подобные.
Если вы планируете использовать get_the_title()
для получения текста заголовка, то логичнее создать переменную %%InsteadTitle%%
и заменить ей переменную %%title%%
.
Как создать переменную год в Yoast
В заголовке вам может понадобится переменная %%CurrentYear%%
, которая будет содержать текущий год. Это может пригодиться, например, если у вас на сайте есть информация о событиях, которые происходят ежегодно.
// define the custom replacement callback
function get_seo_current_year() {
$current_year = date('Y');
return $current_year . ' год';
}
// define the action for register yoast_variable replacments
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%CurrentYear%%', 'get_seo_current_year', 'advanced', 'Current Year' );
}
// Add action
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
Как видите, принцип создания переменной точно такой же, как и в предыдущем примере.
Кстати, текущий год так же можно включить в переменную %%AfterTitle%%
по нужному вам условию. Например, выводите год, если get_post_type() === 'afisha'
или get_post_meta( get_the_ID(), 'current_year', true ) == 'true
‘
О том, как сделать шорткод с текущем годом для использования в тексте см. здесь.