显示所有作者及其唯一一篇最新帖子

时间:2012-08-25 作者:gil hamer

我有一个有许多作者和帖子的网站。我需要创建一个所有作者的列表,并为每个作者显示其最新帖子(不是帖子,only one post).

这更好地解释了我需要什么:

<ul>
    <li>
        <h2>name of the author</h2>
        <a href="his latest post"> Title of his latest post </a>
    </li>
</ul>
这是我目前使用的代码,它工作正常,但只有一个循环。如果我想自动显示所有作者,我需要创建其中许多:

<ul>
    <?php
    query_posts(\'showposts=1&author=7\'); 
    if (have_posts()) : while (have_posts()) : the_post();
    ?>
        <li>
            <h2>name of the author</h2>
            <a href="his latest post"> Title of his latest post </a>
        </li>
    <?php
    endwhile; endif; 
    ?>
</ul>
有没有简单的方法可以只使用一个循环?

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

在@Sagive SEO答案中get_users_of_blog() 是一个去润滑函数。

下面的代码是什么

获取所有作者display nameid 在里面$authorsListWP_Query 获取每个作者的最新帖子

   <?php
    $authors=get_users();
    $i=0;
    //get all users list
    foreach($authors as $author){
        $authorList[$i][\'id\']=$author->data->ID;
        $authorList[$i][\'name\']=$author->data->display_name;
        $i++;
    }
    ?>
    <ul>
        <?php 
        foreach($authorList as $author){
            $args=array(
                    \'showposts\'=>1,
                    \'author\'=>$author[\'id\'],
                    \'caller_get_posts\'=>1
                   );
            $query = new WP_Query($args);
            if($query->have_posts() ) {
                while ($query->have_posts()){
                    $query->the_post();
        ?>
        <li>
         <h2><?php echo $author[\'name\']; ?></h2>
         <a href="<?php echo get_permalink(); ?>"> <?php echo get_the_title(); ?> </a>
        </li>
        <?php
                }
                wp_reset_postdata();
            }
        }
        ?>
    </ul>
重要环节:

get_users()

SO网友:Sagive

我已经为这个目的准备了一些东西,如果你不喜欢它的显示方式,你需要更改它。。。无论如何:

In My Opinion you need to:
1。抓取所有作者(放入一个数组)
2。在构建列表时通过该数组运行
3。放松并享受结果;)

Please Note...
我认为在一个页面中显示所有作者是个坏主意,因为加载可能需要很多时间,因此可以通过更改变量设置希望显示的作者数量:$howManyAuthors

原来的代码应该归功于其他人,但这是很久以前我接受并定制的。。。如果你想看看这个朋友-谢谢

        <div class="authorsContainer">

            <?php
                //define vars from user selection
                $howManyAuthors = 50;

                //Get users and count of posts put into array 
                $authorsArray=array();
                $blogusers = get_users_of_blog();
                if ($blogusers) {
                  foreach ($blogusers as $bloguser) {
                    $post_count = get_usernumposts($bloguser->user_id);
                    $authorsArray[$bloguser->user_id]=$post_count;
                  }
                  arsort($authorsArray); 
                  $maxauthor = $howManyAuthors;
                  $count=0;
                  foreach ($authorsArray as $key => $value) {
                  $count++;
                    if ($count <= $maxauthor) {
                        $user = get_userdata($key); 
                        $username = $user->user_login;                          
                        $displayname = $user->display_name; 
                        $author_posts_url = get_author_posts_url($key);
                        $post_count = $value;

            ?>  
                    <div class="topWriterBox">
                        <div class="topWriterName">
                            <a href="<?php echo $author_posts_url; ?>"><?php echo $displayname; ?> </a>
                        </div>
                        <div class="topWriterArticles"><?php echo __(\'Published: \', \'\').$post_count.__(\' Articles\', \'\'); ?></div>
                        <br class="clr" />

                        <h4><?php _e(\'Latest Article:\', \'\'); ?></h4>

                        <ul>
                        <?php
                          $args=array(
                            \'showposts\'=>1,
                            \'author\'=>$user->ID,
                            \'caller_get_posts\'=>1
                          );
                          $my_query = new WP_Query($args);
                          if( $my_query->have_posts() ) {
                            while ($my_query->have_posts()) : $my_query->the_post(); 
                        ?>

                        <!--============ THE AUTHORS ARTICLE DATA ================-->
                            <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permenent Link To <?php the_title_attribute(); ?>"><?php the_title(); ?></a> <small>(<?php the_time(\'m.d.y\') ?></small>)</li>  

                      <?php
                            endwhile;
                         }
                      ?>
                      </ul>
                    </div><!-- end of topWriterBox -->
                    <?php
                }
              }
            }
            ?>

        </div>

您可以看到example here (这是希伯来语,不是问题,吉尔?

希望这有帮助,干杯,萨吉夫。

结束

相关推荐

Redirect Loops Problems

我不知道到底发生了什么事。昨天,它工作得很好。我回忆起今天早上我所做的让我陷入这种困境的事情。昨天,我刚刚在PhpMyAdmin编辑帖子。好吧,不管怎样,我禁用了所有插件,并找出什么不起作用。这是插件自定义永久链接。My problem is that I have about hundred videos in youtube, and each video is given with Custom Permalink set. I want to keep the Custom Permalink P