即时通讯人员需要一种按观看次数,评分,评论对我的帖子进行排序的方法。我搜索了很多插件,但它们全都是马车。
我想要这样的东西。 排序http://img138.imageshack.us/img138/2577/sorting.png
为了分离不同的排序方式,您可以使用类似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的插件来存储评分,然后使用与上面类似的功能。
希望这可以帮助!