如何解析Yoast SEO代码片断变量

时间:2018-09-28 作者:Josh Smith

我看到Yoast将代码段变量存储在数据库中。我想获取它们的值并通过WP REST API发布它们。我还想保留管理员的管理功能和可伸缩性的默认设置。

我正在将这些值发送到其他应用程序,但无法发送占位符。

它们显然可以被解析,因为这就是它们在前端的显示方式。我就是不知道怎么做。

在数据库中,您可以看到:

_yoast_wpseo_title  %%title%% %%page%% %%sep%% %%sitename%%
在前端,您可以看到:

<title>About - Cool Site Name</title>

3 个回复
最合适的回答,由SO网友:Josh Smith 整理而成

基本上,这就是我从这个问题中寻找的答案:

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;
} 

https://stackoverflow.com/questions/41361510/is-there-any-way-to-get-yoast-title-inside-page-using-their-variable-i-e-ti

SO网友:baskin

好的,下面是我如何解析代码片段的,以防其他人需要知道

$id = get_the_ID();

$post         = get_post( $id, ARRAY_A );
$yoast_title = get_post_meta( $id, \'_yoast_wpseo_title\', true );
$yoast_desc = get_post_meta( $id, \'_yoast_wpseo_metadesc\', true );

$metatitle_val = wpseo_replace_vars($yoast_title, $post );
$metatitle_val = apply_filters( \'wpseo_title\', $metatitle_val );

$metadesc_val = wpseo_replace_vars($yoast_desc, $post );
$metadesc_val = apply_filters( \'wpseo_metadesc\', $metadesc_val );

echo $metatitle_val;
echo "<br>";
echo $metadesc_val;

SO网友:realloc

Yoast的SEO插件有一个nice API. 你可能可以用这样的过滤器

add_filter( \'wpseo_options\', function ( $arr ) {
    return $arr;
} );

结束

相关推荐