如何在wordpress侧边栏调用某作者最新文章列表?

如题,多作者博客实现类似专栏效果,如何在侧边栏调用作者档案(avatar+nickname+description)和最新5篇文章?请提供详细代码,谢谢!

共有11个回答 按发表时间排序
  • 3
    最佳答案
    wopus - 2011-05-04

    这段代码用来在单页显示文章作者的最新文章.

    <?php
    if(is_single()){  //只在单页显示
        $query = new WP_Query(
            array(
                'author' => $post->post_author,
                'posts_per_page' => 10,
                'post__not_in' => array($post->ID),
            )
        );
        $posts = $query->posts;
        //获取文章
    ?>
    <ul>
    <?php foreach($posts as $k => $p): //文章输出 ?>
        <li>
            <a href="<?php echo get_permalink($p->ID); ?>">
                <?php echo $p->post_title ?>
            </a>
        </li>
    <?php endforeach; ?>
    </ul>
    <?php
    }
    ?>
    
    Melvin - 2011-05-04

    谢谢!可能是我没表述清楚,我想实现的是这个页面上 http://my1510.cn/ “专栏”那一部分,调用指定作者的档案及其最新文章。

    wopus - 2011-05-05

    这段代码是跟你上面贴的网站里 "专栏" 一样的显示, 可以放在首页使用. 代码中关键部分做了注释, html输出你可以自定义一下.

    <?php
        $blogusers = get_users(array(
            'orderby' => 'nicename', //按nicename排列
            'role' => 'editor', //返回的用户类型
            //role 可以是 administrator subscriber editor author contributor
            'number' => 2, //返回的用户数量
        ));
        foreach ($blogusers as $user) {
            echo '<div>';
            echo '<a href="'.get_author_posts_url($user->ID).'">'.get_avatar($user->user_email, 48).'</a>';
            echo '<a href="'.get_author_posts_url($user->ID).'">'.$user->user_nicename.'</a>';
            echo '<a href="'.get_author_feed_link($user->ID).'">订阅</a>';
            echo '</div>';
            $query = new WP_Query(
                array(
                    'author' => $user->ID,
                    'posts_per_page' => 1,
                )
            );
            $posts = $query->posts;
            //获取文章
            echo '<div>';
            foreach($posts as $p){
                echo '<a href="'.get_permalink($p->ID).'">'.$p->post_title.'</a>';
                echo '<div>'.$p->post_excerpt.'</div>';
                if(function_exists('the_views')) { echo '<a href="' . get_permalink($p->ID) . '">'.the_views(false).'</a> | '; }
                echo '<a href="'.get_comments_link($p->ID).'">评论('.get_comments_number($p->ID).')</a>';
            }
            echo '</div>';
        }
    ?>
    
    Melvin - 2011-05-05

    万分鸡冻地贴了代码,刷新后提示:

    Fatal error: Call to undefined function get_users().................

    是不是这里的get_users()要先定义?我用的主题是WordFinder 1.1,应该和主题没关系吧?

     $blogusers = get_users(array(
        'orderby' => 'nicename', //按nicename排列
        'role' => 'editor', //返回的用户类型
        //role 可以是 administrator subscriber editor author contributor
        'number' => 2, //返回的用户数量
    ));
    
    wopus - 2011-05-05

    你的 wordpress 是什么版本的?
    这个函数是 wordpress 3.1 才新加入的.

    Melvin - 2011-05-05

    找到问题了,get_users()从wp3.1版本开始支持,我用的3.0.5,升级到3.1.2,支持是支持了,但是按照slene的代码输出的除了avatar、nicename等需要的内容外,前面还输出一堆代码

    object(stdClass)#3314 (10) { ["ID"]=> string(1) "2" ["user_login"]=> string(6) "Melvin" ["user_pass"]=> string(34) "$P$BT0eN3msFLC9zGllGf2MI1TW6.7b3B." ["user_nicename"]=> string(6) "melvin" ["user_email"]=> string(11) "i@pmook.com" ["user_url"]=> string(20) "http://www.pmook.com" ["user_registered"]=> string(19) "2011-03-23 17:10:06" ["user_activation_key"]=> string(0) "" ["user_status"]=> string(1) "0" ["display_name"]=> string(6) "Melvin" }

    这是为什么呢?
    于是我把slene给的代码替换成codex给的sample,可以正常输出,不知道是啥问题……

    Melvin - 2011-05-05

    移步测试站看效果 pmook.com ,并且content里的最新文章也不显示了,我的sidebar在content之前输出

    wopus - 2011-05-05
    var_dump($user);
    

    之前的一小段测试代码被我删掉了;

    Melvin - 2011-05-05

    slene大好人啊,非常感谢!终于搞定了!O(∩_∩)O谢谢……

  • 3
    摄氏度 - 2011-05-04

    有一个插件可以实现这个调用档案档案功能:Author Exposed
    只需要安装好插件,将插件代码

    <?php if (function_exists('author_exposed')) {author_exposed();} ?>
    

    加入到侧边栏的相应位置即可。

    还可以直接插入代码实现,只要在用户信息那里填写完整了

    <div id="article-author">
      <div id="author-image">
       <?php if (function_exists('get_avatar')) { echo get_avatar( get_the_author_email(), '80' ); }?>
      </div>
      <div id="author-text">
        <strong><?php the_author_link(); ?></strong>
        <p><?php the_author_description();?></p>
      </div>
    </div>
    

    这段代码就是调用头像及作者名称还有简介的。

    Melvin - 2011-05-04

    多谢prower的回答~~
    author exposed用过,只能列出作者档案,但是不能显示该作者的最新文章,我想解决的问题是在插入上述调用作者档案的代码后,再用类似WP_Query的函数在档案下面调用该作者的最新文章,PHP门外汉尝试几次都不成功,求救~~
    ps:再把功能搞复杂点,例如:调用该作者的最新5篇文章,第一篇显示Title和Excerpt,后四篇只显示Title。怎么加判断条件?

做好事要留名,请先登录再回答,如果还没有帐户请先注册