命令'rand'不能在Wordpress foreach循环上工作

时间:2017-03-29 09:32:35

标签: php wordpress

我试图通过'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'
); 

1 个答案:

答案 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 );