仅当指定了Gravtal时才获取用户

时间:2015-08-04 作者:Cédric Charles

我想检索12个Wordpress用户的列表,但我想让他们随机(在每个页面重新加载时)并且只有12个指定了Gravatar的用户。

现在,我有12个随机用户,但我不能只检索那些带有Gravatar的用户。。。你能帮帮我吗?

以下是我现在拥有的:

功能。php:

// ***********************************************************************************
// ******* Random users
// ***********************************************************************************
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;
}
在我的模板中:

<?php $args = array(
    \'role\'         => \'\',
    \'meta_key\'     => \'\',
    \'meta_value\'   => \'\',
    \'meta_compare\' => \'\',
    \'meta_query\'   => array(),
    \'include\'      => array(),
    \'exclude\'      => array(),
    \'orderby\'        => \'rand\',
    \'offset\'       => \'\',
    \'search\'       => \'\',
    \'number\'       => \'12\',
    \'count_total\'  => false,
    \'fields\'       => \'all\',
    \'who\'          => \'\'
  );

  $users = get_users($args);  
  ?>

    <ul class="you-know-people cf">
      <?php $i=0; ?>
        <?php foreach ( $users as $user ) { ?>

          <?php $author_avatar = get_avatar($user->ID,55); ?>

                <li class="you-know-people-item <?php if($i%4 === 0){echo \'first\';}?>">
                    <a href="#">
                    <?= $author_avatar; ?>
                </a>
            </li>

            <?php $i++; ?>
        <?php }?>
    </ul>
提前谢谢你,塞德里克

1 个回复
SO网友:Rarst

Gravatar的设计不要求下游系统知道是否存在匹配。图像(如果有)是根据请求确定和提供的,只需要提供哈希。

如果它有一个头像,就不可能从电子邮件或其散列中“猜测”。这只能通过请求Gravatar来解决。

基本上,要实现这一目标,您需要:

为每个用户查询Gravatar服务存储要查询的信息,然后永远重新运行此服务以保持其更新。这不太实用,并带来了Gravatar服务的主要优点。

最常见的解决方法是使用生成的回退(identions等)。

结束

相关推荐

与wp_USERS一起查询wp_usermeta

我想使用WordPress查询功能,而不需要外部插件。以下是我目前掌握的情况:add_filter(\'user_search_columns\', \'user_search_columns_bd\' , 10, 3); function user_search_columns_bd($search_columns, $search, $this){ if(!in_array(\'display_name\', $search_columns)){