如何按视图,评论,评分等方式对帖子进行排序

2 sorting wordpress

即时通讯人员需要一种按观看次数,评分,评论对我的帖子进行排序的方法。我搜索了很多插件,但它们全都是马车。

我想要这样的东西。 排序http://img138.imageshack.us/img138/2577/sorting.png

Ste*_*ris 5

为了分离不同的排序方式,您可以使用类似jQuery的方式来创建选项卡式区域,在每种方式中,您都调用一个不同的(php)函数来对帖子进行相应的排序,然后在function.php文件中定义这些php函数。

至于功能-WordPress已经存储了帖子的评论数量-但您需要使其存储页面浏览量/等级。首先,wp-postviews可以正常工作-我们只需要一些东西来存储数据。它带有专用功能,可以按受欢迎程度获取帖子,您可以使用它,但是如果您想获得更大的灵活性,我在下面添加了一些功能,这些功能按视图数或评论数排序:

对于按评论排序:

function get_most_commented($limit=10) {
    global $wpdb;

   $most_commented = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts WHERE post_type='post' AND post_status = 'publish' ORDER BY comment_count DESC LIMIT 0 , $limit");

    foreach ($most_commented as $post) {
        setup_postdata($post);
        $id = $post->ID;
        $post_title = $post->post_title;
        $count = $post->comment_count;
        $output .= '<li><a href="'. get_permalink($id).'">'.$post_title. '</a> </li>';
    }
    return $output;
}
Run Code Online (Sandbox Code Playgroud)

用于按帖子视图排序

function get_most_visited($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");


    foreach ($most_viewed as $post) {
            $id = $post->ID;
            $post_views = intval($post->views);
            $post_title = get_the_title($post);
            $post_title = $post->post_title;
             $output .= '<li><a href="'. get_permalink($id).'">'.$post_title. '</a>
     }

    return $output;
}
Run Code Online (Sandbox Code Playgroud)

然后,只需包含这些函数即可:get_most_visited()get_most_commented()(或带有帖子数的可选参数-默认为10)<ul><ol>标签。(我已经包括了如何检索注释/视图的数量,以防您想使用它们-否则可以将其删除)

这种方法使您在呈现帖子时具有很大的灵活性。基本上-这使您可以轻松地使用一些基本的CSS样式或一些涉及jQuery的样式来为列表设置样式。

至于帖子评分,可以使用类似Post Star Ratings的插件来存储评分,然后使用与上面类似的功能。

希望这可以帮助!