我试图通过'rand'在我创建的foreach循环上订购一些数据,这些数据输出了一些我为其创建了自定义角色的用户。除此之外,所有其他比特都很棒。
这是循环的当前状态:
<?php
// Featured Consultants
$consultants = get_users( 'role=consultant&number=2' );
// Array of WP_User objects.
foreach ( $consultants as $consultant ) {
// Check for 'featured' Consultants
if($consultant->featured == 'Yes'){
echo '<div class="columns six consultantCard">';
echo '<div class="columns four">';
echo get_avatar( $consultant->id, 150 );
echo '</div>';
echo '<div class="columns eight">';
// Get users details
echo '<span class="name">' . esc_html( $consultant->first_name ) . ' ' . esc_html( $consultant->last_name ) . '</span>';
echo '<span class="jobTitle">' . esc_html( $consultant->job_title ) . '</span>';
echo '<span class="location">Currently based in ' . esc_html( $consultant->current_location ) . '</span>';
// Check if user is less than 30 days old
if( strtotime($consultant->user_registered) < strtotime('30 days') ){
echo '<span class="newTag">New</span>';
}
// Check if user is featured
if($consultant->featured == 'Yes'){
echo '<span class="featuredTag">Featured Candiate</span>';
}
// Check if user is accredited
if($consultant->accredited == 'Yes'){ ?>
<span class="icon"><img src="<?php bloginfo('template_url');?>/assets/img/icons/accreditedIcon.png" /></span>
<?php echo '<span class="accreditedTag">Bench Accredited</span>';
}
echo '</div>';
echo '</div>';
} else{
echo 'No Featured Consultants';
}
}
?>
它似乎只显示最新的条目,仅此而已。我试图创建一个数组但仍然是相同的结果:
$consultant = array(
'role' => 'consultant',
'order' => 'rand'
);
答案 0 :(得分:1)
我们可以使用get_users()
来获取作者列表,具有特定角色的用户,具有特定元的用户等。该函数返回可以按ID,登录,昵称,电子邮件, URL,registered,display_name,post_count或meta_value。但是没有随机选项,比如get_posts()
函数提供的随机显示帖子。
由于get_users()
函数使用WP_User_Query
类,因此我们可以使用动作钩子 pre_user_query 来修改类变量。这个想法是通过参数使用我们自己的'rand'顺序。如果我们将'rand'添加到orderby参数,则会使用user_login
。在这种情况下,我们需要将其替换为RAND()
以随机导致用户。在下面的这个例子中,我们'我'并且您可以按名称使用您自己的订单。
// Add this code in your function.php
add_action( 'pre_user_query', 'my_random_user_query' );
function my_random_user_query( $class ) {
if( 'rand' == $class->query_vars['orderby'] )
$class->query_orderby = str_replace( 'user_login', 'RAND()', $class->query_orderby );
return $class;
}
WP_User_Query
包含查询和我们的参数的顺序。现在,我们通过参数对WordPress进行了新订单。
$users = get_users( array(
'orderby' => 'rand',
'number' => 5
));
print_r( $users );