我正在使用WordPress创建一个绘图网站,并允许我的用户绘制和发布他们的图纸作为固定帖子
现在我想制作一个主题,用于更改显示的帖子的顺序,以便按照日期顺序显示的观看次数或评论次数
在哪里可以找到负责WordPress主题中显示顺序的帖子的代码。
答案 0 :(得分:0)
如果您想更改显示顺序,则可以使用
pre_get_posts
行动。
function wh_post_display_order_comment($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('orderby', 'comment_count');
$query->set('order', 'DESC');
}
}
add_action('pre_get_posts', 'wh_post_display_order_comment');
<小时/>
默认情况下,WordPress没有任何选项可以通过视图来缩短帖子,所以你必须使用一个小技巧
function whpp_track_post_views($post_id) {
if (!is_single())
return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
whpp_set_post_views($post_id);
}
add_action('wp_head', 'whpp_track_post_views');
function whpp_set_post_views($postID) {
$count_key = 'whpp_track_post_views';
$count = get_post_meta($postID, $count_key, true);
if ($count == '') {
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
}
//To keep the count accurate, lets get rid of prefetching
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
现在我们已经为视图设置了逻辑,所以我们将它缩短
function wh_post_display_order_view($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('meta_key', 'whpp_track_post_views');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
}
add_action('pre_get_posts', 'wh_post_display_order_view');
<小时/>
如果您想要orderby
两个分数,那么我们必须再应用一个小技巧,因为WordPress中没有默认选项。首先我们将计算评论,我们将添加一个小的权重并添加总视图数,并保持它是一个不同的元字段,然后我们将对该密钥的帖子进行排序。
function whpp_track_post_views($post_id) {
if (!is_single())
return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
whpp_set_post_views($post_id);
}
add_action('wp_head', 'whpp_track_post_views');
function whpp_set_post_views($postID) {
$count_key = 'whpp_track_post_views';
$count = get_post_meta($postID, $count_key, true);
//retriving total comments
$comments_count = wp_count_comments($postID);
$total_comment = $comments_count->total_comments;
$comment_point = 2; //change the number with your desired weightage
$comment_score = $total_comment * $comment_point;
if ($count == '') {
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
update_post_meta($postID, 'whpp_view_comment_score', ($count + $comment_score));
}
//To keep the count accurate, lets get rid of prefetching
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
function wh_post_display_order_view($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('meta_key', 'whpp_view_comment_score');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
}
add_action('pre_get_posts', 'wh_post_display_order_view');
请注意:为评论添加额外的重量不是强制性的,但如果读者真的喜欢这篇文章,那么只有他们会发表评论。
代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。
代码已经过测试并且有效。
希望这有帮助!