Wordpress循环 - 按层次顺序显示自定义分类术语中的帖子

时间:2013-08-10 12:35:46

标签: php loops taxonomy wordpress

好的,这就是我要做的事情:

我有一个名为drink-menu的自定义帖子类型,一个名为drink-menu-categories的分类,以及一个名为template-drinks-menu.php的页面模板。

分类学有许多术语 - 葡萄酒,儿童白色和红色;啤酒,儿童Pilsener,Stout等......

我想使用一个循环来显示这些字词中的所有帖子,其顺序与他们在管理员中订购的顺序相同。这是我到目前为止的代码:

    <?php

    $post_type = 'drinks-menu';

    // Get all the taxonomies for this post type
    $taxonomies = get_object_taxonomies( (object) array('post_type' => $post_type ) );

    foreach( $taxonomies as $taxonomy ) : 

        // Gets every "category" (term) in this taxonomy to get the respective posts
        $terms = get_terms( $taxonomy );

        foreach( $terms as $term ) : 

            echo '<h1>'.$term->name.'</h1>';
            if ( $term->description !== '' ) { 
                echo '<div class="page_summary">'. $term->description .'</div>';
            }
            echo '<br>';

            $posts = new WP_Query( "taxonomy=$taxonomy&term=$term->slug&posts_per_page=-1&orderby=id&order=DESC" );

            if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();

                ?>
                <a href="<?php the_permalink(); ?> "><?php the_title(); ?></a>
                <?php
                if( get_field( "price" ) ): ?>
                    <?php echo '<span">'; the_field( "price" ); echo ' | '; the_field( "abv" ); echo '</span>';?>
                <?php endif;
                echo '<em>'; the_excerpt(); echo '</em><br><br>';

            endwhile; endif;

        endforeach;

    endforeach;

    ?>

这很适合将条款中的所有帖子带到页面上,但不是按顺序排列。您可以看到我尝试了taxonomy=$taxonomy&term=$term-slug&posts_per_page=-1&orderby=id&order=DESC,但它无效,所有内容都按字母顺序显示。

任何可以指引我正确方向的Wordpress大师?我希望我已经明确了这个问题。谢谢: - )

1 个答案:

答案 0 :(得分:0)

  1. 通过“menu_order”;
  2. 在管理页面中订购的帖子
  3. 如果你想使用query_posts(WP_Query构造函数)订购帖子,你应该使用大写的变量“orderby”的值 - &gt; “ID”。