答案 0 :(得分: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;
}
按帖子浏览排序
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;
}
然后只需在get_most_visited()
或get_most_commented()
标记内添加这些功能:<ul>
和<ol>
(带有可选的帖子数量参数 - 默认值为10)。 (我已经包含了如何在你想使用它们的情况下检索注释/视图的数量 - 否则你可以删除它们)
此方法为您提供了如何呈现帖子的灵活性。基本上 - 这允许您轻松地使用一些基本的CSS样式或者有点像jQuery的爱好者来为列表设置样式。
至于帖子评分,像Post Star Ratings这样的插件可以用来存储评级,然后你可以使用与上面类似的功能。
希望这有帮助!
答案 1 :(得分:1)