Add formatting to Array

时间:2012-10-11 作者:Phantasmix

这将按作者最新帖子的日期显示作者。我想:

  1. add formatting around each author
  2. list additional properties (头像、最新帖子标题和摘录)<;--我有这方面的资料,但不确定要把它们放在哪里。

    <ul>
    <?php
    //List of users sorted descending by date of latest post written by user
    $uc=array();
    $blogusers = get_users_of_blog();
    if ($blogusers) {
      foreach ($blogusers as $bloguser) {
        $userpost = get_posts(\'showposts=1&author=\'.$bloguser->user_id);
        $uc[$bloguser->user_id] = \'\';
        if ($userpost) {
          $uc[$bloguser->user_id]=$userpost[0]->post_date;
        }
      }
      arsort($uc);
      foreach ($uc as $key => $value) {
        $user = get_userdata($key);
        $post_count = get_usernumposts($user->ID);
        if ($post_count) {
          $author_posts_url = get_author_posts_url($key);
          echo \'<li><a href="\' . $author_posts_url . \'">\' . $user->user_firstname . \' \' .         $user->user_lastname . \'</a> (\' . $post_count . \') </li>\';
        }
      }
    }
    ?>
    

1 个回复
最合适的回答,由SO网友:Adam 整理而成

根据你的评论,我发现有点难以理解,但是如果你想添加<div> 围绕对方然后改变你的第二个foreach 对的声明;

  foreach ($uc as $key => $value) {
    $user = get_userdata($key);
    $post_count = get_usernumposts($user->ID);
    if ($post_count) {
      $author_posts_url = get_author_posts_url($key);
      echo \'<div class="class-name-here">\';
      echo \'<li><a href="\' . $author_posts_url . \'">\' . $user->user_firstname . \' \' .         $user->user_lastname . \'</a> (\' . $post_count . \') </li>\';
      echo \'</div>\';
    }
  }
这是基于你想保持<li> 元素,如果不是,只需将其替换为<div>

更新(with regards to your comment)

$args=array(
  \'author\' => $user->ID,
  \'post_type\' => \'post\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => 1,
  \'caller_get_posts\'=> 1,
  \'orderby\' => \'author\'   //add the orderby parameter and sort by author
);
作为我mentioned in my comment attached to your question 在上面,您可以尝试添加orderby 参数,然后指定author 作为其值,该值应通过ID排序,或者如果不起作用,则替换author 具有$user->ID

在原始代码段上运行一些测试后,删除不推荐使用的函数并添加orderby=date 参数设置为初始值foreach 语句(尽管有无都不起作用)我仍然能够检索作者列表,显示他们的最后一篇文章,然后对最近日期返回的所有结果排序。所以如果,

用户A发布于2012年10月12日,用户B发布于2012年10月15日,用户C发布于2012年10月11日,返回的结果顺序为,

用户B用户A用户C用户

$uc=array();
$blogusers = get_users();
if ($blogusers) {
  foreach ($blogusers as $bloguser) {
    $userpost = get_posts(\'showposts=1&author=\'.$bloguser->ID.\'&orderby=date\');
    $uc[$bloguser->ID] = \'\';
    if ($userpost) {
       $uc[$bloguser->ID]=$userpost[0]->post_date;
    }
  }
  arsort($uc);
  foreach ($uc as $key => $value) {
    $user = get_userdata($key);
    $post_count = count_user_posts($user->ID);
    if ($post_count) {
      $author_posts_url = get_author_posts_url($key);
        echo \'<li><a href="\' . $author_posts_url . \'">\'.$user->user_firstname . \' \'  $user->user_lastname . \'</a> (\' . $post_count . \') </li>\'
    }
  }
}
虽然上面的代码片段可以更有效地重写,it does work for meso it should for you 与你想要实现的目标相关。

结束

相关推荐

Output from Meta Box Array

我已经创建了一个元框,它成功地存储了post数据,但我在输出内容并以合理的方式显示它时遇到了困难,这超出了我对PHP的有限知识。我是一个养蜂人,我想记录我的蜂箱的检查情况,所以每个蜂箱都有一个记录,其中包含一定数量的字段。因此,我想遍历所有配置单元的colony数组,即直到$hive为空,然后以每个配置单元有一行的表的形式输出数据。目前,我已经成功地手动生成了表的第一行,但不知道如何设置一个循环来完成这项工作。<?php if (have_posts() ):?>