税务查询数组术语无序显示

时间:2014-02-18 作者:davehudson52

我希望我的tax\\u查询词按照我在下面的数组中列出的顺序显示帖子,但它不按照列出的顺序显示。

$args = array(
    \'post_type\' => \'staff\',
    \'posts_per_page\' => \'-1\',
    \'tax_query\' => array(
            array(
                \'taxonomy\' => \'staff-title\',
                \'field\' => \'slug\',
                \'terms\' => array(
                                \'editor-in-chief\',
                                \'managing-editor\',
                                \'fiction-editor\',
                                \'poetry-editor\',
                                \'nonfiction-editor\',
                                \'production-manager\'
                            )
            )
        )
);
$my_query = new WP_Query( $args );

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


                echo\'<div class="loop four columns">\';
                    echo\'<div class="column-nest">\';
                        echo\'<h5 class="staff-title big-top-space">\'; the_field(\'staff_title\'); echo\'</h5>\';
                        echo\'<h6 class="staff-name  bottom-space">\'; the_field(\'staff_member_name\'); echo\'</h6>\';               
                    echo\'</div> <!-- column-nest -->\';
                    echo\'<figure class="staff-photo-border">\';
                        echo\'<img class="column-nest" src="\'; the_field(\'staff_member_photo\'); echo\'" alt="photo of the_field(\\\'staff_member_name\\\');" />\';
                    echo\'</figure> <!-- staff-photo-border -->\';
                echo\'</div> <!-- loop four columns -->\';


    the_content();
 endwhile; endif; ?>
相反,它按以下顺序显示帖子:

小说编辑
小说编辑
诗歌编辑
非小说编辑
制作经理
总编辑

1 个回复
最合适的回答,由SO网友:fischi 整理而成

tl;dr

这是不可能的tax_query.

A.tax_query 是对交付结果的限制,不用于订购帖子。您使用Order & Orderby Parameters 为此。

这与统计学和数学有关,因为分类学是nominal scale, 这意味着它只是一个分类,每个项目都在同一个级别上。就像眼睛的颜色一样,你不能说用这些数据哪个更好。

要排序数据,必须对数据进行某种比较。这被称为ordinal scale, (是的,词序是按序排列的),例如3大于2大于1,因此你可以先按最小或最大的顺序排列(ASCDESC). 请注意title 也遵循顺序刻度,但不是通过内容的比较,而是通过字母表的刻度。

*完整地说,还有interval scale 以及ratio scale, 但这些与WordPress查询无关。

回到WordPress,现在我们了解到,您不能对分类法进行排序(没有元数据),您可以使用它来定义结果应该具有的一组特征。

tax_query 你定义了一组帖子应该具备的特征,仅此而已。请不要认为集合也可以是一个限制,如NOT IN.

使用定义限制后tax_query (公平地说,meta_query 对不同的数据做同样的事情),您可以告诉WordPress如何根据可测量的变量(可以是整数、字母或任何其他顺序标度)对结果排序。

通过添加

    \'order\' => \'ASC\', // Order Ascending
    \'orderby\' => \'title\', // Order by Title
到您的$args 大堆

然而,一个可能的解决方案是按顺序查询限制,而不是全部查询。请注意,这种方法对于数据库来说比较重。

在我的示例中,我使用一个数组来定义分类法的顺序,并在这个数组中循环,查询它自己的每个分类法。

通过将分类法放入一个有序数组中,我为其添加了顺序功能。分类法本身仍然是名义上的

$taxonomies = array(
    \'editor-in-chief\',
    \'managing-editor\',
    \'fiction-editor\',
    \'poetry-editor\',
    \'nonfiction-editor\',
    \'production-manager\'
);
foreach( $taxonomies as $thistaxonomy ) {

    $args = array(
        \'post_type\' => \'staff\',
        \'posts_per_page\' => \'-1\',
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'staff-title\',
                \'field\' => \'slug\',
                \'terms\' => array(
                    $thistaxonomy
                )
            )
        )
    );
    
    /* All your query and magic down there */

}
希望这对你有用!

结束