“最受欢迎”帖子列表(基于视图数量)

时间:2009-11-22 13:35:40

标签: wordpress sorting thumbnails categories

我想显示按观看次数排序的最受欢迎的帖子列表。

我想在左边显示小缩略图(在刚调整大小的帖子中使用相同的图像),在右边显示。因此格式化如下:

[#1 Post Title]
[80x80 thumbnail] [excerpt, limit to x chars]

[#2 Post Title]
[80x80 thumbnail] [excerpt, limit to x chars]

[#3 Post Title]
[80x80 thumbnail] [excerpt, limit to x chars]

... up to 5 posts

有可用的插件吗?如果可以通过简单地使用wordpress模板标签来实现,我宁愿使用第三方插件。但对我来说重要的是显示格式,我需要左边的缩略图。

3 个答案:

答案 0 :(得分:2)

您可以安装Wordpress popular posts之类的插件。 此插件无法完全按照您的意愿执行,但它会在数据库中记录网页浏览量,您可以通过编写如下代码在主题中使用该数据:

$right_now = gmdate("Y-m-d");

$max_most_read = 5; // Number of "most read-spots" 

$qstr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, 
    (select postid, sum(pageviews) pageviews 
     from $pageviews_table 
     where day >= '$right_now' - INTERVAL 30 DAY
     group by postid) pv
    WHERE wposts.post_status = 'publish' 
    AND wposts.post_type = 'post'
    AND wposts.ID = pv.postid
    AND wposts.post_date >= '$right_now' - INTERVAL 30 DAY
    ORDER BY pv.pageviews DESC
    LIMIT 0, " . $max_most_read . "
 ";

$posts = $wpdb->get_results($qstr);
if ($posts) {
    foreach ($posts as $post) {
    setup_postdata($post);
        $category = get_the_category();

        # Now you can use $post->post_content to extract image tag and excerpt
        # See http://www.wprecipes.com/how-to-get-the-first-image-from-the-post-and-display-it
        # on how to extract and resize first image
    }
}

答案 1 :(得分:1)

如果您想尽可能避免使用第三方插件,可能会有所帮助。它确实需要插件 - wp-postiews - 但仅用于存储页面查看次数。完成后,您可以使用下面的代码完全自定义您显示的内容以及排序方式。我使用它的目的和你一样(I wanted to display the thumbnails of the most popular posts in a thumbnail slider)。

现在,假设您想要将帖子显示为列表:

    <ul>
      <?php echo get_popular_thumb(5); ?>
    </ul>

下面将定义函数popularPostsThumb()(并且您可以更改要显示的帖子数),但会在列表标签​​<li></li>内返回列表元素的内容。

现在在functions.php文件中定义上述功能

function get_popular_thumb($limit=10) {
    global $wpdb;
    $most_viewed = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0)  AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_type='post' AND post_date < '".current_time('mysql')."' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT $limit");

    if($most_viewed) {
        foreach ($most_viewed as $post) {
            $id = $post->ID;
            $post_views = intval($post->views);
            $post_title = get_the_title($post);
            $post_title = $post->post_title;
            $related_thumbnail = get_post_meta($post->ID, "thumbnail_url", $single = true);
            $thumb_src = wp_get_attachment_image_src ( get_post_thumbnail_id ( $post->ID ));

        if (has_post_thumbnail($id )){
            $output .= '<li><a href="' . get_permalink($id) . '" title="'. $post_title . '"><img src="'. $thumb_src[0].'" title="'. $post_title .'"/>  </a> </li>';
        }
    }
}
return $output;}

在此示例中,它只输出图像的缩略图 - 但在<li></li>标记内,您可以更改HTML以生成您想要的内容(加上一些CSS样式)。你可以很容易地提取帖子的摘录 - 我没有测试它,但像$excerpt= $post->post_excerpt这样的东西应该有效。(有'整洁'的方式来获取帖子的缩略图 - 但这样你就可以手动编辑<img>)的标题。

希望这有帮助。

答案 2 :(得分:0)

找到一个完美无缺的plugin