排序WP查询结果

时间:2019-09-16 18:41:36

标签: php wordpress sorting advanced-custom-fields

我正在我的wordpress网站上运行用户查询以列出销售代表。基本上,我有一个页面列出了所有具有“销售代表”角色的用户,并使用jQuery根据状态下拉选择器隐藏/显示他们。

在任何不覆盖地区的州,我都需要将公司办公室列为结果之一。公司办公室被列为销售代表,其ID为11。我遇到的问题是,我始终需要公司办公室将最后一个列为最后结果。

公司办公室所覆盖的地区因州而异,因此我无法运行查询,而只能在最后扔掉公司办公室。它需要列出特定于所选状态的元数据,因此它必须是查询的一部分。

这是我到目前为止所拥有的:

            $args = array();
            $user_query = new WP_User_Query( array( 'role' => 'SalesRep' ) );

            if ( ! empty( $user_query->get_results() ) ) {
                foreach ( $user_query->get_results() as $user ) { ?>
                    <div class="rep hide" data-category="
                    <?php
                        if( have_rows('states', 'user_'.$user->ID) ):
                            while ( have_rows('states', 'user_'.$user->ID) ) : the_row();
                                echo the_sub_field('state', 'user_'.$user->ID) . ' ';
                            endwhile;
                        else :
                        endif;
                    ?> ">
                        <p><strong><?php echo $user->display_name;?></strong>
                        <?php
                        $has_area = false;
                        if( have_rows('states', 'user_'.$user->ID) ):
                            while ( have_rows('states', 'user_'.$user->ID) ) : the_row();
                            echo '<span class="stateID" data-category="'.get_sub_field('state', 'user_'.$user->ID).'">';
                            the_sub_field('area', 'user_'.$user->ID);


                              echo '</span>';
                            endwhile;
                        else :
                        endif; ?>
                        <a href="mailto:<?php echo $user->user_email;?>"><?php echo $user->user_email;?><br />
                        <a href="tel:1-<?php the_field('phone_number', 'user_'.$user->ID)?>">
                        <?php the_field('phone_number', 'user_'.$user->ID)?></a>
                    </div>
                <?php }
            } else {
                echo 'No Sales Reps Found.';
            } ?>

此代码很好用,但是我对如何将公司办公室推到最后感到茫然。我需要使用uasort吗?还是应该查找post-> ID并在== 11时取消设置?任何帮助将不胜感激。

非常感谢

2 个答案:

答案 0 :(得分:0)

如果您有与SalesRep角色关联的元数据,则可以将meta添加到用户查询中,并根据该meta值对结果进行排序。 “示例”部分的第一项显示了向查询添加元数据 https://codex.wordpress.org/Class_Reference/WP_User_Query

“订购和订购者参数”部分显示了如何使用订购者对检索到的用户进行排序。

答案 1 :(得分:0)

好吧,事实证明这比我预期的要容易一些。我添加了“ corporate_office”的元字段,然后为每个用户分配了一个选择器。对于所有用户,默认为否;对于公司办公室,默认为。然后,我将查询修改为按ASC顺序的metafield进行排序。解决了。感谢大家的建议。