有没有办法使用他们的变量(即 %%title%%)在页面内获取 yoast 标题

新手上路,请多包涵

我需要创建一个函数,以便我可以在 wordpress 常规页面之外的任何页面内使用它。我的意思是 wp_head() 不会放在那里。我需要它是有目的的。

目的是用于我不能使用任何 css 或 js 的 amp(ampproject.org) 页面。这就是为什么我需要这个。我需要在 wp 标题处放置一个函数,以便将 yoast 标题放在那里。

我需要这样的东西:

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

原文由 Hasan Tareq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 338
2 个回答

默认情况下,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;
}

SEO 标题 可能有 2 种可能性

案例 I :管理员在 SEO 标题 字段中输入 %%title%% %%page%% %%sep%% %%sitename%% 然后上面的代码将返回帖子/页面 _默认标题_。

案例二:管理员在 SEO 标题 字段中输入 My Custom Title %%page%% %%sep%% %%sitename%% 然后上面的代码将返回 My Custom 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);
    }
    $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;
}

希望这可以帮助!

原文由 Raunak Gupta 发布,翻译遵循 CC BY-SA 3.0 许可协议

你有非常困难的决定。我有一个更简单的解决方案:

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

原文由 WP Punk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题