不用插件在wordpress中显示"热门文章"

2012年05月24日

      在自己博客的侧边栏显示“相关文章”“热门文章”,能让博客显得充实,吸引来访读者的阅读兴趣。很多插件都能实现这个功能。但是对于爱折腾的同学,自己动手写代码也很值得一试。

      相比显示“最近发布”(recent posts),most popular posts更不好操作。因为popular的指标不好定义,包括评论数量、阅读数、推荐次数等。所以一般折衷用评论数(comments)评价文章热度,这里介绍的方法也是如此。更多详细介绍参考这个博客

      1.创建函数。函数命名为 popularPosts。打开  root/wp-includes/functions.php,粘贴下面的代码

function popularPosts($no_posts = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
    global $wpdb;
    $request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
    $request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
    if(!$show_pass_post) $request .= " AND post_password =''";
    if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
    $request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
    $posts = $wpdb->get_results($request);
    $output = '';
    if ($posts) {
        foreach ($posts as $post) {
            $post_title = stripslashes($post->post_title);
            $comment_count = $post->comment_count;
            $permalink = get_permalink($post->ID);
            $output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
       }
    } else {
        $output .= $before . "None found" . $after;
    }
    echo $output;
} 

    

      2.在侧边栏中添加代码。以本博客使用的主题Blocks2为例,打开 root/wp-include/themes/current-theme/sidebar.php ,在其中找到  

    <!– recent posts –>

    <div class="widget widget_pages">

     ……

     </div>

     将下面代码粘贴在后面

<div class="popular">
    <h3>热门文章</h3>
    <ul>
        <?php echo popularPosts(10); ?>
    </ul>
</div>

   

     3.编写样式表,美化页面。打开 root/wp-include/themes/current-theme/style.css,找到.widget li li {……},将下面的代码粘贴在后面

.popular {

    background:#F1F5F6;

    margin-bottom:10px;

    padding:0 10px 5px;

}

.popular h3 {

    background:#E1E7E9;

    margin:0 -10px;

    padding:5px 10px;

    font-size:11px;

    border-bottom:1px solid #FFF;

}

.popular ul {

    margin:0 -5px;

}

.popular li {

    list-style:none;

    padding:3px 5px;

    border-bottom:1px solid #E1E7E9;

    line-height:18px;

}

.popular div.itembox {

    padding: 5px 0 0;

}

.popular li ul {

    padding-right:0;

    margin-left:10px;

}

.popular li li {

    padding:3px 5px 0;

    border-top:1px solid #E1E7E9;

    border-bottom:none;

    margin-top:3px;

}

    最重要的是第一步,其后的显示位置和显示风格可以根据博客主题的风格和自己的喜好进行修改。

归档:技术 | 标签: ,
  1. admin
    2012-05-24 16:23

    如果对热门文章的综合评选因素更在意,这个插件Popularity Contest不错。http://wordpress.org/extend/plugins/popularity-contest/

无觅相关文章插件,快速提升流量