如何将Wordpress Taxonomy作为文本输出,然后将它们用作元关键字?

时间:2017-08-25 02:11:40

标签: php wordpress meta-tags taxonomy

我正在为我的帖子创建输出Microdata的函数。我想将分类法用作meta-keywords,因此我需要将它们输出为逗号分隔的文本。

我尝试按照this question here中的解决方案,但根本没有结果。

第一次尝试:

echo '<meta itemprop="keywords" content="';
$terms = get_the_term_list( $post->ID,', ' );
$terms = strip_tags( $terms );
echo $terms;
echo '"/>';

第二次尝试:

$terms = get_the_term_list( $post->ID,', ' );
$terms = strip_tags( $terms );
echo '<meta itemprop="keywords" content="';
echo $terms;
echo '"/>';

第三次尝试:

$terms = get_the_term_list( $post->ID,', ' );
$terms = strip_tags( $terms );
echo '<meta itemprop="keywords" content="';
$terms;
echo '"/>';

所有尝试都没有导致任何输出。您能告诉我们是否有办法达到如下输出:

<meta itemprop="keywords" content="category1,category2,tag1,tag2,tag3"/>

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用自定义字段而不是分类。这是将附加信息添加到wordpress站点的正确方法。

请查看以下链接。

https://developer.wordpress.org/reference/functions/get_post_meta/

https://codex.wordpress.org/Custom_Fields

答案 1 :(得分:0)

你的第三次尝试永远不会有效,因为你必须使用echo来打印这些术语,但是你的第一次尝试更接近了。

问题是您没有正确使用get_the_term_list()See the Codex - 它一次仅适用于一个分类法,并且您必须传递您想要获得术语的分类法的名称。

您希望获得所有分类的所有条款,因此首先您需要获取所有分类的列表,然后您可以使用该列表来获取条款。

我还建议使用wp_get_post_terms(),因为它可以返回没有标记的名称。

$term_names = array(); // array to store all names until we're ready to use them

// get all taxonomies for the current post
$taxonomy_names = get_object_taxonomies( $post );

foreach ($taxonomy_names as $taxonomy){      
    // get the names of all terms in $taxonomy for the post
    $term_list = wp_get_post_terms($post->ID, $taxonomy, array("fields" => "names"));

    // add each term to our array
    foreach($term_list as $term){
        $term_names[] = $term;
    }
}

if ($term_names){ // only display the metatag if we have any terms for this page
    // implode will join all the terms together separated by a comma
    $keywords = implode(",", $term_names);
    echo '<meta itemprop="keywords" content="'.$keywords .'"/>';
}

我还没有对该代码进行测试,因此可能存在一些问题,但请告诉我,因为逻辑应该对您有用。