2013-04-25 113 views
1

尝试按字母顺序排列WordPress用户的名字。标准的WP_User_query不起作用,因为我需要结合三种不同的用户角色,正如你所看到的。关于如何按照用户的名字按字母顺序排列此列表的任何想法?我不知道该怎么做!如何根据名字按字母顺序排序此循环?

<?php 

// get the featured editors 
$editor_query = new WP_User_Query(array('role' => 'Editor')); 
$editors = $editor_query->get_results(); 

// get the featured authors 
$author_query = new WP_User_Query(array('role' => 'Author')); 
$authors = $author_query->get_results(); 

// get the featured managers 
$manager_query = new WP_User_Query(array('role' => 'Manager')); 
$managers = $manager_query->get_results(); 

// store them all as users 
$user_query = array_merge($authors, $editors, $managers); 

// User Loop 
if (!empty($user_query)) { 

$sortArray = array(); 

foreach ($user_query as $user) { 
    $auth_id = get_userdata($user->ID); 
    $job_title = get_the_author_meta('job_title', $user->ID); 
    $avatar = get_avatar($user->ID, 87); 
    $post_count = get_usernumposts($user->ID); 
    $author_profile_url = get_author_posts_url($user->ID); 
?> 

    <div class="wp-author-wrap"> 
    <div class="wp-team-box"> 

     <a href="<?php echo $author_profile_url; ?>"><?php echo $avatar; ?></a> 
     <a href="<?php echo $author_profile_url; ?>" class="wp-author-title"><?php echo get_user_meta($user->ID, 'first_name', TRUE) . ' ' . get_user_meta($user->ID, 'last_name', TRUE); ?></a> 
     <?php echo $job_title; ?> 
     <ul> 

      <li><a href="<?php echo $author_profile_url; ?>">View <?php echo get_user_meta($user->ID, 'first_name', TRUE); ?>'s Profile</a></li> 
      <li><a href="<?php bloginfo('url'); ?>/?s=+&author=<?php echo $user->ID; ?>">Read <?php echo get_user_meta($user->ID, 'first_name', TRUE); ?>'s Posts</a></li> 

     </ul> 

    </div> 

    <div class="wp-dots"></div> 
    </div> 

<?php } 
} ?> 

谢谢你们!

+0

你可以尝试http://php.net/manual /en/function.array-multisort.php – DropHit 2013-04-25 22:59:00

+2

这不是multisort的目的。它是_is_然而什么['usort()'](http://www.php.net/usort)是用于(查看多维数组的无数排序在这里。 – Wrikken 2013-04-25 23:03:13

回答

2

可以使用Order and Orderby properties of the WP_User_Query class检索已排序为每个角色每个数组:

$editor_query = new WP_User_Query(
        array(
         'role' => 'Editor', 
         'orderby' => 'display_name', 
         'order' => 'ASC' 
        ) 
       ); 

然后使用PHP usort这样的:

function compare_user_display_name($a, $b) { 
    return strcasecmp($a->display_name, $b->display_name); 
} 

$user_query = array_merge($authors, $editors, $managers); 
usort($user_query, "compare_user_display_name"); 
+1

我认为你错过了船,他正在合并3不同的查询结果在一起。 – mpen 2013-04-25 23:07:24

+1

完美的工作!非常感谢! – Casey 2013-04-26 20:00:57