我正在为我的帖子创建输出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"/>
提前致谢。
答案 0 :(得分:0)
使用自定义字段而不是分类。这是将附加信息添加到wordpress站点的正确方法。
请查看以下链接。
https://developer.wordpress.org/reference/functions/get_post_meta/
答案 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 .'"/>';
}
我还没有对该代码进行测试,因此可能存在一些问题,但请告诉我,因为逻辑应该对您有用。