自定义作者循环中的WP顺序ASC

时间:2014-09-11 作者:Johnny Derp

我当前的作者列表仅显示具有帖子的作者,但其排序依据不是ASC 而且它不起作用。有什么想法吗?

<ul class="authorlist">
<?php
// displays all users with their avatar and their posts (titles)
$blogusers = get_users_of_blog();
if ($blogusers) {
    foreach ($blogusers as $bloguser) {
        $user = get_userdata($bloguser->user_id);

        $args=array(
            \'author\' => $user->ID,
            \'post_type\' => \'post\',
            \'order\' => \'ASC\',
            \'post_status\' => \'publish\'
        );
        $my_query = null;
        $my_query = new WP_Query($args);

        if ( $my_query->have_posts() ) {
            echo \'<li>\';
            echo \'<a href="\'.get_author_posts_url( $user->ID ).\'">\';
            if ( has_wp_user_avatar($user->ID) ) {
                echo \'<span class="avaterimage">\' . get_wp_user_avatar($user->ID, 128) . \'</span>\';
            } else {
                echo \'<span class="avaterimage"><img src="\'.get_template_directory_uri().\'/images/empty_avatar_256x256.png\'.\'"></span>\';
            }
            echo \'<p>\' . $user->user_firstname.\' \'.$user->user_lastname . \'</p>\';
            echo \'</a>\';
            echo \'</li>\';
        }

        wp_reset_query();  // Restore global post data stomped by the_post().
    }
}
?>
</ul>
我使用此选项的原因是WP defaultwp_list_authors 没有头像图像选项

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

要添加到@Rarst answer,代码中还有几个其他问题。

如上所述,get_users_of_blog() 已折旧。你说过你确实试过了get_users(), 但它没有起作用。原因是,返回的对象已随函数更改。你应该做一个var_dump 查看返回的对象以及可以有效使用的对象

做这样的事

<?php
$blogusers = get_users();
?><pre><?php var_dump($blogusers); ?></pre><?php
产生类似

array(4) {
  [0]=>
  object(WP_User)#307 (7) {
    ["data"]=>
    object(stdClass)#208 (10) {
      ["ID"]=>
      string(1) "4"
      ["user_login"]=>
      string(8) "NAME WITHHELD"
      ["user_pass"]=>
      string(34) "$P$BUisddOXmHJTE8i1vB/a1WZIy4KazDbD/1"
      ["user_nicename"]=>
      string(8) "chantell"
      ["user_email"]=>
      string(26) "EMAIL WITHHELD"
      ["user_url"]=>
      string(0) ""
      ["user_registered"]=>
      string(19) "2013-07-01 15:25:10"
      ["user_activation_key"]=>
      string(0) ""
      ["user_status"]=>
      string(1) "0"
      ["display_name"]=>
      string(15) "WITH HELD"
    }
    ["ID"]=>
    int(4)
    ["caps"]=>
    array(1) {
      ["subscriber"]=>
      bool(true)
    }
    ["cap_key"]=>
    string(15) "wp_capabilities"
    ["roles"]=>
    array(1) {
      [0]=>
      string(10) "subscriber"
    }
    ["allcaps"]=>
    array(3) {
      ["read"]=>
      bool(true)
      ["level_0"]=>
      bool(true)
      ["subscriber"]=>
      bool(true)
    }
    ["filter"]=>
    NULL
    etc.......................
这也是错误的

$user = get_userdata($bloguser->user_id);
user_id 应该是ID 正如您从var_dump. 还有,我想你实际上是在寻找get_user_metaget_userdata 返回与相同的值get_users. 此外,请执行var_dump 查看返回的对象get_user_meta

$user = get_user_meta($bloguser->ID);
?><pre><?php var_dump($user); ?></pre><?php
退货

array(14) {
  ["first_name"]=>
  array(1) {
    [0]=>
    string(8) "WITHELD"
  }
  ["last_name"]=>
  array(1) {
    [0]=>
    string(6) "WITHHELD"
  }
  ["nickname"]=>
  array(1) {
    [0]=>
    string(8) "WITHHELD"
  }
  ["description"]=>
  array(1) {
    [0]=>
    string(0) ""
  }
  ["rich_editing"]=>
  array(1) {
    [0]=>
    string(4) "true"
  }
  ["comment_shortcuts"]=>
  array(1) {
    [0]=>
    string(5) "false"
  }
  ["admin_color"]=>
  array(1) {
    [0]=>
    string(5) "fresh"
  }
  ["use_ssl"]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
  ["show_admin_bar_front"]=>
  array(1) {
    [0]=>
    string(4) "true"
  }
  ["wp_capabilities"]=>
  array(1) {
    [0]=>
    string(28) "a:1:{s:10:"subscriber";b:1;}"
  }
  ["wp_user_level"]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
  ["avatar_manager_avatar_type"]=>
  array(1) {
    [0]=>
    string(8) "gravatar"
  }
  ["twitter"]=>
  array(1) {
    [0]=>
    string(0) ""
  }
  ["facebook"]=>
  array(1) {
    [0]=>
    string(12) "WITHHELD"
  }
}   
这应该能让你走了。还有一点,你应该使用wp_reset_postdata() 重置WP_Query, 不wp_reset_query()

SO网友:Rarst

get_users_of_blog() 确实已弃用,并且已将SQL查询硬编码为按ID排序。

你需要使用现代get_users() 作用它支持许多参数,包括多种排序方法。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post