按名称排序-第二个wp_Query

时间:2013-11-20 作者:JoaMika

我使用下面的代码根据分类法按名称排序,然后列出每个分类法中的帖子。

第一个查询可以按字母顺序列出分类法。

我遇到的问题是,每个分类法中的帖子都没有按字母顺序列出。有什么想法吗?

<ul style="margin: 10px 25px 45px 25px !important;">
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>            

            <?php 

            //if (false == ($content = get_transient(\'os_travel_cache\'))){

            //  ob_start();

                $taxonomies = array(
                    \'tax_one\'       => \'Taxonomy1\',
                    \'tax_two\'       => \'Taxonomy2\',
                    \'tax_three\' => \'Taxonomy3\',
                );


                foreach($taxonomies as $taxonomy => $title) { 
                    // start div... cor column..
                    ?>
                    <li>
                        <div><h6><?php echo $title; ?></h6></div>
                        <?php 

                            $terms = get_terms( $taxonomy, 
                                array(
                                    \'orderby\'       => \'name\', 
                                    \'order\'         => \'ASC\',
                                    \'hide_empty\'    => true ) ); 

                            if (!is_wp_error($terms) && is_array($terms) && count($terms) > 0){
                                foreach($terms as $term){

                                    $args = array(
                                        \'post_type\' => \'os_book\',
                                        \'tax_query\' => array(
                                            array(
                                                \'taxonomy\' =>  $term->taxonomy,
                                                \'field\' => \'id\',
                                                \'terms\' => $term->term_id
                                            )
                                        )
                                    );

                                    ?>
                                    <div class="term_container">
                                        <div class="handler"><span id="ashplus"> + </span><?php echo $term->name; ?></div>
                                        <div>
                                            <ul class="list">
                                    <?php

                                    $rp = new WP_Query( $args );
                                    if ($rp->have_posts())
                                        while ( $rp->have_posts() ) { 
                                            $rp->the_post(); 

                                                $name       = get_field(\'fl_profile_name\');
                                                $location   = get_post_meta(get_the_id(), \'fl_country\', true);

                                            ?>
                                                <li data-location="<?php echo $location; ?>"><a href="<?php the_permalink();?>"><?php echo $name; ?></a></li>

                                            <?php 
                                        }
                                    ?>
                                            </ul>
                                        </div>
                                    </div>
                                    <?php
                                }
                            }

                        ?>
                    </li>
                    <?php
                }

        //      $content = ob_get_contents();

        //      ob_end_clean(); 
        //      set_transient(\'os_travel_cache\', $content, 1);
        //  }
        //  echo $content;
            ?>


        <?php endwhile;
        endif; ?>

        </ul>

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

帖子不会按字母顺序排序,因为你不会告诉WordPress按这种方式排序。默认情况下,它们将按日期按后代顺序排序(最新优先)。

你应该做的是改变你的WP_Query 通过添加参数orderorderby, 所以应该是这样的:

$args = array(
    \'post_type\' => \'os_book\',
    \'orderby\' => \'title\',
    \'order\' => \'ASC\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' =>  $term->taxonomy,
            \'field\' => \'id\',
            \'terms\' => $term->term_id
        )
    )
);
另外,你应该按title 而不是name, 我想是吧。这两种方法的结果可能不同,按名称排序并不能在每种情况下都提供正确的字母顺序(即忽略重音)。

SO网友:user49521

我正在尝试使用下面的代码按分类法对自定义帖子进行排序,但它不起作用。它显示结果,但只是按照我在数据库中输入的顺序排序。非常感谢您的帮助。顺便说一句,我不是编码员。

    $args = array(
        \'post_type\' => \'staff\',
        \'order_by\'  => \'title\',
        \'order\' => \'asc\',
        \'posts_per_page\' => -1,
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'department\',
                \'field\' => \'slug\',
                \'terms\' => \'staff\'
            )
        )
    );

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post