Есть ли способ получить заголовок yoast внутри страницы, используя их переменную (т.е. %% title %%)

Мне нужно создать функцию, чтобы я мог использовать ее внутри любой страницы, которая находится за пределами обычной страницы WordPress. Я имею в виду, что wp_head () не будет размещен там. Мне это нужно для определенной цели.

Цель для страницы amp (ampproject.org), где я не могу использовать css или js. Вот почему мне это нужно. Мне нужно поместить функцию в заголовок wp, чтобы там размещался заголовок yoast.

Мне нужно что-то вроде этого:

function yoastVariableToTitle($variable){
return yoast_vaialble_to_show_title($variable);
}

0

Решение

По умолчанию Yoast принимает формат как %%title%% %%page%% %%sep%%
%%sitename%%
и магазины в wp_postmeta стол под
_yoast_wpseo_title ключ.

Чтобы получить только заголовок страницы / сообщения:

function yoastVariableToTitle($post_id) {
$yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true);
$title = strstr($yoast_title, '%%', true);
if (empty($title)) {
$title = get_the_title($post_id);
}
return $title;
}

Там может быть 2 возможности с SEO название

Случай I: Администратор входит %%title%% %%page%% %%sep%% %%sitename%% в SEO название поле, то приведенный выше код вернет сообщение / страницу заголовок по умолчанию.

Случай II: Администратор входит My Custom Title %%page%% %%sep%% %%sitename%% в SEO название поле, то приведенный выше код вернется Мой пользовательский заголовок.


Чтобы получить полный мета-заголовок страницы / сообщения:

function yoastVariableToTitle($post_id) {

$yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true);
$title = strstr($yoast_title, '%%', true);
if (empty($title)) {
$title = get_the_title($post_id);
}
$wpseo_titles = get_option('wpseo_titles');

$sep_options = WPSEO_Option_Titles::get_instance()->get_separator_options();
if (isset($wpseo_titles['separator']) && isset($sep_options[$wpseo_titles['separator']])) {
$sep = $sep_options[$wpseo_titles['separator']];
} else {
$sep = '-'; //setting default separator if Admin didn't set it from backed
}

$site_title = get_bloginfo('name');

$meta_title = $title . ' ' . $sep . ' ' . $site_title;

return $meta_title;
}

Надеюсь это поможет!

5

Другие решения

Просто Вы можете сделать:

$title = wp_title( '-', false, '' );
0