使用循环显示与帖子相关联的术语

时间:2011-02-02 作者:Travis Northcutt

我正在使用自定义帖子类型和自定义分类法,并使用以下内容在帖子页面上显示分类法的术语:

the_terms( $post->ID, \'taxname\', \'beforetext\', \', \');
有没有办法循环浏览分配给这篇文章的所有分类法,并在无序列表中显示术语,而不是在函数中显示单独的一行。每个分类法的php?我怀疑这可以通过foreach循环完成,但我不知道正确的语法。

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

这个答案是与特诺思卡特(tnorthcutt)共同努力的,所以我创建了社区维基。

有几个有趣的功能可用:the_taxonomies(), 哪个呼叫get_the_taxonomies(), 依次调用get_object_taxonomies()wp_get_object_terms().

  • the_taxonomies() 是一个文档化的模板标记,是调用get_the_taxonomies(), 这是非法的。

  • get_object_taxonomies() 返回相关分类法的列表(作为简单名称或对象),在某些情况下可能非常有用。它是有文档记录的,但很容易错过这个函数,因为在Codex中没有链接到它。我只是通过仔细阅读才找到的wp-includes/taxonomy.php. 这周围有一个未记录的包装函数,get_post_taxonomies(), 默认为当前帖子。

  • wp_get_object_terms() 做大部分的重物搬运。它有两个非常有趣的参数:数组(!)对象ID和数组(!)分类名称。它最终生成了一个看起来有点邪恶的SELECT,并为给定分类中的给定对象返回一个术语数组(如名称、对象或…读取文档)。

如果您需要比通过the_taxonomies(), 了解这些“内部”功能应该是有用的。

SO网友:Norcross

我想你要找的是获取\\u term\\u列表。试试这个

get_the_term_list( $post->ID, \'taxname\', \'\', \', \', \'\');
否则,此功能可能会拉动它们。只是不知道他们会如何在加价方面表现出来

get_terms( $taxonomy, array( \'hide_empty\' => false ) );

SO网友:zzap

这在任何自定义分类法上都非常有效(您不必指定分类法名称)。

你可能需要global $post; 或否,取决于您计划将此代码放置在何处。

global $post;
// get the post type
$post_type = get_post_type( get_the_ID() );
// go to taxonomies array
$post_type_taxonomies = get_object_taxonomies( $post_type );

// if we have any taxonomy
if ( ! empty( $post_type_taxonomies ) ) {

    echo \'<ul>\';

    // loop through each of them
    foreach ( $post_type_taxonomies as $taxonomy ) {
        // get terms list for each taxonomy
        $terms = get_the_term_list( get_the_ID(), $taxonomy, \'\', \'</li><li>\', \'\'  );

        // show only those terms that are assigned to post 
        if ( $terms ) {
            echo \'<li>\' . $terms . \'</li>\';
        }
    }

    echo \'</ul>\';
}

结束

相关推荐

如何将定制的“文本”小部件从unctions.php添加到外观管理器?

我正在尝试使用自己的css类参数向函数中添加默认WP文本小部件的副本。php,以便它出现在窗口小部件管理器中,并可以添加到侧栏中。下面是我的第一次尝试,但我相信一定有比我现在做的更简单的方法。这能以更简单的方式完成吗?在功能上。php,我有这个。。。$google_search = TEMPLATEPATH . \"/google_search.php\";require_once($google_search); add_action(\'widgets_init\', create_funct