[英]WP_Query('orderby=post_date') not working with wordpress
[英]Simulating SELECT YEAR(post_date) SQL query using only WP Query
我不完全确定这是可能的,但我完全没有想法。 由于我的组织使用的其他效率插件的限制,我正在处理的任务需要我专门使用 WP_Query。
纯粹而简单,我需要一种使用 WP_Query 模拟以下查询的方法:
"SELECT YEAR(post_date) FROM wp_posts WHERE post_status = 'publish' GROUP BY YEAR(post_date) DESC"
在您回答之前,请再次注意,使用 $wpdb 全局变量是不可行的,我尝试使用 WP_Query 中的 parse_query 方法,但它似乎没有以任何有意义的方式响应上述查询。
感谢任何花时间思考这个问题的人!
大概试试这个:
<?php
//Alter the group by clause
function query_group_by_year_post_date_filter($groupby){
return 'YEAR(wp_posts.post_date) DESC '; //try only post_date if this doesn't work
}
//Alter the select query
function query_select_fields($fields) {
return 'YEAR(wp_posts.post_date)'; //try only post_date if this doesn't work
}
add_filter('posts_fields','query_select_fields');
add_filter('posts_groupby', 'query_group_by_year_post_date_filter');
$allPosts = get_posts(array( //we have to use get_posts instead of WP_Query cause get_posts supports supress_filters
'post_type' => 'post', //specify post_type here or leave it in your case.
'post_status' => 'publish',
'posts_per_page' => -1,
'suppress_filters' => true //this seems to be preset in only get_posts and not WP_Query
));
remove_filter('posts_groupby', 'query_group_by_filter');
remove_filter('posts_fields','query_select_fields');
?>
根据您的要求,我已尝试不在顶部的 2 个函数中使用 $wpdb。
让我知道这是否对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.