WordPress-按条项列出的自定义帖子类型的自定义分类页面

【WordPress-按条项列出的自定义帖子类型的自定义分类页面】我有一个taxonomy-taxonomy.php页面, 需要如下所示:
自定义帖子类型标题(资源)
自定义分类法1(资源类型)
资源类型第1条款(白皮书)

  • 白皮书发布1
    白皮书发布2
    白皮书发布3
资源类型术语2(视频)
  • 影片发布1
    影片发布2
    影片发布3
试图理解所有有关Wordpress 3.0的新文档, 但是这使我更加困惑, 因为它似乎与2.8混为一谈。
#1不必将对象转换为数组, 可以轻松处理对象。好奇(至少对我而言)是, 你得到这样的东西:
Array ( [0] => stdClass Object ( [term_id] => 7 [name] => Magister comunicaciones aplicadas [slug] => magister-comunicaciones-aplicadas [term_group] => 0 [term_taxonomy_id] => 7 [taxonomy] => linea-de-estudio [description] => [parent] => 0 [count] => 4 )[1] => stdClass Object ( [term_id] => 8 [name] => Engagement marketing [slug] => engagement-marketing [term_group] => 0 [term_taxonomy_id] => 8 [taxonomy] => linea-de-estudio [description] => [parent] => 0 [count] => 5 ) )

它基本上是一个对象数组, 因此你必须以这种方式对待它们。例如, 如果我想要第一个的名称:
$myterms = get_terms('taxonomy-name', 'orderby=none& hide_empty'); echo$myterms[0]-> name;

如果需要遍历元素, 则仍然可以使用foreach(); 。
foreach ($myterms as $term) { ?> < li> < a href="http://www.srcmini.com/< ?php echo $term-> slug; ?>"> < ?php echo $term-> name; ?> < /a> < /li> < ?php } ?>

这样, 你可以发布分类法中的文章。
对于自定义帖子类型, 你必须创建一个像这样的循环:
$args = array( 'post_type' => 'post-type-name', 'taxonomy' => 'term' //for example //'resources' => 'videos' ); //assigning variables to the loop global $wp_query; $wp_query = new WP_Query($args); // starting loop while ($wp_query-> have_posts()) : $wp_query-> the_post(); the_title(); blabla....endwhile;

然后, 你可以为每个分类/术语创建多个循环:)。
如果你想花更多的时间(不想重复一百遍), 可以将第二个循环包含在第一个循环中, 并为分类法(资源即资源)及其术语(视频)分配变量(来自你的示例仅是最后一个)。这个想法是, 你将有一个普通的(典型的)wordpress循环, 该循环仅限于自定义的post-type和每个术语。
foreach ($myterms as $term) : ?> < li> < a href="http://www.srcmini.com/< ?php echo $term-> slug; ?>"> < ?php echo $term-> name; ?> < /a> < /li> < ?php$term_name = $term-> slug; $args = array( 'post_type' => 'post-type-name', 'taxonomy' => "$term_name" ); //assigning variables to the loop global $wp_query; $wp_query = new WP_Query($args); // starting loop posting only while ($wp_query-> have_posts()) : $wp_query-> the_post(); the_title(); blabla....endwhile; endforeach; ?>

显然, 你也可以做相反的事情, 为单模板自定义类型创建正常循环(看起来你只有一个), 并且内部包含所有自定义术语。
不是很优雅, 但这是我想出它的最佳方法:P。希望有人能理解这一点, 听起来令人困惑。
也许可以使用某些回调函数?
#2嘿manon1165, 我实际上刚刚完成。非常痛苦, 希望我的代码段能对你有所帮助!
我做了一个自定义页面模板。并且做了一些类似的事情
< ?php $categories = get_terms('taxonomy-name', 'orderby=name& hide_empty=0'); $cats = object_to_array($categories); ?>

现在, 只需print_r($ cats), 你将看到类别的数组。
你需要将对象转换为数组, 我这样做是。
function object_to_array($data) { if(is_array($data) || is_object($data)) { $result = array(); foreach($data as $key => $value) { $result[$key] = object_to_array($value); } return $result; } return $data; }

我做了
< ul id="cat-list"> < ?php foreach($cats as $cat) { ?> < li> < a href="http://www.srcmini.com/taxonomy-name/< ?php echo $cat['slug']; ?> "> < ?php echo $cat['name']; ?> (< ?php echo $cat['count']; ?> )< /a> < br> < ?php echo $cat['description']; ?> < /li> < ?php } ?> < /ul>

希望有帮助!
#3这对我来说很好:-
< ?php $custom_terms = get_terms('custom_taxonomy'); foreach($custom_terms as $custom_term) { wp_reset_query(); $args = array('post_type' => 'custom_post_type', 'tax_query' => array( array( 'taxonomy' => 'custom_taxonomy', 'field' => 'slug', 'terms' => $custom_term-> slug, ), ), ); $loop = new WP_Query($args); if($loop-> have_posts()) { echo '< h2> '.$custom_term-> name.'< /h2> '; while($loop-> have_posts()) : $loop-> the_post(); echo '< a href="'.get_permalink().'"> '.get_the_title().'< /a> < br> '; endwhile; } } > ?

    推荐阅读