有没有办法使用他们的变量(即 %%title%%)在页面内获取 yoast 标题
Is there any way to get yoast title inside page using their variable ( i.e. %%title%%)
我需要创建一个函数,以便我可以在 wordpress 常规页面之外的任何页面中使用它。我的意思是 wp_head() 不会放在那里。我需要它是有目的的。
目的是用于我不能使用任何 css 或 js 的 amp(ampproject.org) 页面。这就是为什么我需要这个。我需要在 wp 标题处放置一个函数,以便将 yoast 标题放在那里。
我需要这样的东西:
function yoastVariableToTitle($variable){
return yoast_vaialble_to_show_title($variable);
}
By Default Yoast takes a format as %%title%% %%page%% %%sep%%
%%sitename%%
, and stores in wp_postmeta
table under
_yoast_wpseo_title
key.
只获取 page/post 的标题:
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;
}
SEO 标题
可能有 2 种可能
案例 I:管理员在 SEO 标题 字段中输入 %%title%% %%page%% %%sep%% %%sitename%%
然后上面的代码将 return Post/Page 默认标题.
案例 II:管理员在 SEO 标题 字段中输入 My Custom Title %%page%% %%sep%% %%sitename%%
然后上面的代码将 return 我的自定义标题.
获取 page/post 的完整元标题:
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;
}
希望对您有所帮助!
只要你能做到:
$title = wp_title( '-', false, '' );
我在我的插件中使用的解决方法是使用 class-frontend.php(yoast 的 class)中的函数。它在循环之外工作,只需给它一个 post 的 id:
function convert_yoast_title ($post_id) {
$string = WPSEO_Meta::get_value( 'title', $post_id );
if ($string !== '') {
$replacer = new WPSEO_Replace_Vars();
return $replacer->replace( $string, get_post($post_id) );
}
return ''; // if not found - returns empty string
}
你的决定非常艰难。我有一个更简单的解决方案:
function get_post_title( WP_Post $post ): string {
$yoast_title = get_post_meta( $post->ID, '_yoast_wpseo_title', true );
if ( empty( $yoast_title ) ) {
$wpseo_titles = get_option( 'wpseo_titles', [] );
$yoast_title = isset( $wpseo_titles[ 'title-' . $post->post_type ] ) ? $wpseo_titles[ 'title-' . $post->post_type ] : get_the_title();
}
return wpseo_replace_vars( $yoast_title, $post );
}
以及描述:
function get_post_description( WP_Post $post ): string {
$yoast_post_description = get_post_meta( $post->ID, '_yoast_wpseo_metadesc', true );
if ( empty( $yoast_post_description ) ) {
$wpseo_titles = get_option( 'wpseo_titles', [] );
$yoast_post_description = isset( $wpseo_titles[ 'metadesc-' . $post->post_type ] ) ? $wpseo_titles[ 'metadesc-' . $post->post_type ] : '';
}
return wpseo_replace_vars( $yoast_post_description, $post );
}
我最终使用了 Raunak Gupta 的脚本,我不得不修改它以便在主页标题中正确显示博客描述。这是修改后的变体:
function yoastVariableToTitle($post_id) {
$yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true);
$title = strstr($yoast_title, '%%', true);
if ( !is_front_page() ) {
$title = strstr( $yoast_title, '%%', true );
} else {
$title = get_bloginfo( 'description' );
}
$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;
}
从 Yoast 14.0 开始,这变得容易多了。您可以使用此代码获取当前页面的标题:
YoastSEO()->meta->for_current_page()->title;
来源:https://developer.yoast.com/blog/yoast-seo-14-0-using-yoast-seo-surfaces/
我需要创建一个函数,以便我可以在 wordpress 常规页面之外的任何页面中使用它。我的意思是 wp_head() 不会放在那里。我需要它是有目的的。
目的是用于我不能使用任何 css 或 js 的 amp(ampproject.org) 页面。这就是为什么我需要这个。我需要在 wp 标题处放置一个函数,以便将 yoast 标题放在那里。
我需要这样的东西:
function yoastVariableToTitle($variable){
return yoast_vaialble_to_show_title($variable);
}
By Default Yoast takes a format as
%%title%% %%page%% %%sep%% %%sitename%%
, and stores inwp_postmeta
table under_yoast_wpseo_title
key.
只获取 page/post 的标题:
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;
}
SEO 标题
可能有 2 种可能案例 I:管理员在 SEO 标题 字段中输入 %%title%% %%page%% %%sep%% %%sitename%%
然后上面的代码将 return Post/Page 默认标题.
案例 II:管理员在 SEO 标题 字段中输入 My Custom Title %%page%% %%sep%% %%sitename%%
然后上面的代码将 return 我的自定义标题.
获取 page/post 的完整元标题:
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;
}
希望对您有所帮助!
只要你能做到:
$title = wp_title( '-', false, '' );
我在我的插件中使用的解决方法是使用 class-frontend.php(yoast 的 class)中的函数。它在循环之外工作,只需给它一个 post 的 id:
function convert_yoast_title ($post_id) {
$string = WPSEO_Meta::get_value( 'title', $post_id );
if ($string !== '') {
$replacer = new WPSEO_Replace_Vars();
return $replacer->replace( $string, get_post($post_id) );
}
return ''; // if not found - returns empty string
}
你的决定非常艰难。我有一个更简单的解决方案:
function get_post_title( WP_Post $post ): string {
$yoast_title = get_post_meta( $post->ID, '_yoast_wpseo_title', true );
if ( empty( $yoast_title ) ) {
$wpseo_titles = get_option( 'wpseo_titles', [] );
$yoast_title = isset( $wpseo_titles[ 'title-' . $post->post_type ] ) ? $wpseo_titles[ 'title-' . $post->post_type ] : get_the_title();
}
return wpseo_replace_vars( $yoast_title, $post );
}
以及描述:
function get_post_description( WP_Post $post ): string {
$yoast_post_description = get_post_meta( $post->ID, '_yoast_wpseo_metadesc', true );
if ( empty( $yoast_post_description ) ) {
$wpseo_titles = get_option( 'wpseo_titles', [] );
$yoast_post_description = isset( $wpseo_titles[ 'metadesc-' . $post->post_type ] ) ? $wpseo_titles[ 'metadesc-' . $post->post_type ] : '';
}
return wpseo_replace_vars( $yoast_post_description, $post );
}
我最终使用了 Raunak Gupta 的脚本,我不得不修改它以便在主页标题中正确显示博客描述。这是修改后的变体:
function yoastVariableToTitle($post_id) {
$yoast_title = get_post_meta($post_id, '_yoast_wpseo_title', true);
$title = strstr($yoast_title, '%%', true);
if ( !is_front_page() ) {
$title = strstr( $yoast_title, '%%', true );
} else {
$title = get_bloginfo( 'description' );
}
$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;
}
从 Yoast 14.0 开始,这变得容易多了。您可以使用此代码获取当前页面的标题:
YoastSEO()->meta->for_current_page()->title;
来源:https://developer.yoast.com/blog/yoast-seo-14-0-using-yoast-seo-surfaces/