使用循环显示与帖子相关联的术语 时间: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>\'; } 结束 文章导航