在存档模板中显示Yoast WordPress SEO标题

时间:2013-03-07 作者:Mattvic

Yoast的WordPress SEO插件允许用户向分类术语归档页面添加SEO标题和元描述。然后在文档的开头使用这些内容。

我正在尝试在分类法归档模板中将分类法术语的SEO标题显示为H1。

要在帖子中执行此操作,帖子类型或页面很容易:

echo get_post_meta($post->ID, \'_yoast_wpseo_title\', true); 
在存档模板上,这不起作用。

有人知道如何让它工作吗?

屏幕截图示例这是特定标记术语的标题。我试图在我的归档模板中显示此标题,但对于自定义分类术语。

The tag archive edit screen

最终代码这是我在archive.php 样板如果您使用自定义分类法,它就可以工作。关于标签或类别,请看下面MikeMadern的答案。

<h1 class="archive-title">
<?php
if ( is_tax() ) :                                                                   
    $taxonomy = get_queried_object()->taxonomy;
    $term_id = get_queried_object()->term_id;
    $meta   = get_option( \'wpseo_taxonomy_meta\' );
    $title  = $meta[$taxonomy][$term_id][\'wpseo_title\'];
    //printf( \'<pre>%s</pre>\', print_r( get_option( \'wpseo_taxonomy_meta\' ), 1 ) );
    if ( isset($meta) && !empty($title) ) :         
        echo apply_filters( \'the_title\', $title );
    else :
        single_term_title();    
    endif;
endif;                              
?>
</h1>  

4 个回复
最合适的回答,由SO网友:Mike Madern 整理而成

获取存档SEO标题

如果定义了自定义帖子类型的存档标题,可以通过以下方式获取:

$titles = get_option( \'wpseo_titles\' );
$title  = $titles[\'title-ptarchive-POST_TYPE\'];

echo apply_filters( \'the_title\', $title );
记住更换POST_TYPE 按您自己的自定义帖子类型。

显示所有wpseo_title 变量,可以使用:

printf( \'<pre>%s</pre>\', print_r( get_option( \'wpseo_titles\' ), 1 ) );
因此,您可以轻松地选择所需的。

获取术语SEO标题类别使用此代码可以获取您定义的SEO标题:

$cat_id = get_query_var( \'cat\' );
$meta   = get_option( \'wpseo_taxonomy_meta\' );

$title  = $meta[\'category\'][$cat_id][\'wpseo_title\'];

echo apply_filters( \'the_title\', $title );
使用此代码,您可以获得您定义的SEO标题:

$tag_id = get_query_var( \'tag\' );
$meta   = get_option( \'wpseo_taxonomy_meta\' );

$title  = $meta[\'post_tag\'][$tag_id][\'wpseo_title\'];

echo apply_filters( \'the_title\', $title );
显示全部wpseo_taxonomy_meta 变量,可以使用:

printf( \'<pre>%s</pre>\', print_r( get_option( \'wpseo_taxonomy_meta\' ), 1 ) );
这样,您可以查看结构和可用变量。

SO网友:Vinod Dalvi

在post循环的存档页面上,添加以下代码行以使其正常工作

echo get_post_meta(get_the_ID(), \'_yoast_wpseo_title\', true); 
告诉我它是否对您有效,否则我将提供另一种解决方案。

SO网友:Fabien Snauwaert

获取类别和标记的焦点关键字要以编程方式获取类别或标记的焦点关键字,可以使用以下两种方法之一:

            /** Method 1. Tap into the options directly. **/
            $meta = get_option( \'wpseo_taxonomy_meta\' ); // needed only once, so keep this outside/before your foreach loop.

            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo $meta[\'post_tag\'][$tag->term_id][\'wpseo_focuskw\'];
                }
            }
这基本上是Mike在文章末尾使用的方法。

            /** Method 2. Use Yoast\'s function. **/
            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo WPSEO_Taxonomy_Meta::get_term_meta( $tag->term_id, \'post_tag\', \'focuskw\' );
                }
            }
我倾向于选择第二种方法,因为这样我就不必自己获取或关心获取元选项。

在您的functions.php, 您可能需要测试if class_exists( \'WPSEO_Taxonomy_Meta\' ) 然后可能会将Yoast函数包装成您自己的函数,以防您在以后停止使用Yoast SEO。

原始问题中提到的一些背景,如get_post_meta( $tag->term_id, \'_yoast_wpseo_focuskw\', true); 不适用于类别和页面(它将不返回任何内容。)

那为什么呢?

这是因为,对于类别和标记,focus关键字保存在数据库的其他位置。而不是保存在wp_postmeta 像往常一样,它埋在wp_options 表,作为JSON对象。

通过上述方法,我们可以访问这些值。

最后,如果你像我一样,记不起分类法的名称(例如:标签为什么使用分类法并不明显post_tag 而且不仅仅是tag, 编辑类别或标记时,只需查看URL即可:它将显示…taxonomy=category… 或类似的

SO网友:Chaiiz Rataphan

回复获取类别和标记的焦点关键字

//感谢您使用rest api

获取/wp json/wp/v2/类别?鼻涕虫=slug_name

插件。在用方法1

更改行

$meta[\'post_tag\'][$tag->term_id][\'wpseo_focuskw\'];

$meta[\'category\'][$param_post_id][\'wpseo_focuskw\'];

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在