首页 > 解决方案 > 对 WP 查询结果进行排序

问题描述

我正在我的 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 时取消设置它?任何帮助将不胜感激。

非常感谢

标签: phpwordpresssortingadvanced-custom-fields

解决方案


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

有一个 Order & Orderby 参数部分显示如何使用 orderby 对检索到的用户进行排序。


推荐阅读