如何按最近和最多评论过滤器对帖子进行排序?

时间:2011-09-08 06:29:42

标签: wordpress

如何按最近和最多评论过滤器对帖子进行排序?

例如http://goo.gl/K9sXz

更多示例:http://goo.gl/SjYjs

我发现了很多,但失败了

请帮帮我:)

2 个答案:

答案 0 :(得分:1)

我已经回答了类似的问题here,但我会总结一下我认为会对你有所帮助的问题。它将涉及自定义查询,您可以了解有关here的更多信息。

您可以使用单独的“div”元素按不同方法对每个帖子进行排序。然后你可以使用jQuery来隐藏它们(除了说'最近'的面板)。然后,当用户使用jQuerys .click()事件处理程序单击它时(隐藏所有其他元素),您可以使用链接显示相关的“div”元素。

要使用您使用自定义查询的各种方法排序的帖子填充每个“div”元素。例如,要按注释数量排序,请在'functions.php'文件中定义此函数。

    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><h1><a href="'. get_permalink($id).'">'.$post_title.' - '.$count.' comments</a></h1> post_excerpt;</li>';
    }
    return $output;
}

然后你在上面的相关'div'元素内调用函数:

<?php echo get_most_commented(15) ?>

在有序/无序列表中(显示最多评论的15个帖子)。这个例子只输出标题和摘录,但你可以改变HTML,并使用一些CSS样式来获得你想要的。

希望这有帮助!你激励我现在写一篇关于这个的教程!

修改: 我刚看了你给出的Nettuts示例 - 他们使用php'GET'方法重新排序帖子。单击链接后,您将被发送到同一页面但具有不同的get变量(例如:recent = true,commented = true)。该页面包含一系列php if语句,用于确定如何根据哪个GET变量设置为“true”来对帖子进行排序。

这比不需要jQuery(或者确实启用了javascript)更有优势 - 并且它不会同时加载所有三种排序方法 - 只需要它所需的一种方法。

答案 1 :(得分:1)

我现在看到你的样子。读了一下之后,我意识到了更好(最好?)的方式。对我的第一个答案来说,这是一种完全不同的方法,所以我将其作为第二个答案发布。

我写了详细的教程here。简而言之,您可以定义指向您所在页面的链接,但使用GET变量可以告诉WordPress以某种方式对帖子进行排序。默认情况下,WordPress按日期排序,但附加

?&orderby=comment_count&order=desc

到url它将以不同的顺序排序(在这种情况下按注释数量)。发布视图有点不同,因为这是一个自定义字段(你仍然需要wp-post views插件)。

希望这有帮助!