admin管理员组文章数量:1336143
I have been looking at this for hours but can't get it to work.
$newsItems2 = get_posts([
"post_type" => "post",
"post_status" => "publish",
"posts_per_page" => 3,
"orderby" => "date",
"order" => "DESC",
'meta_query' => [
[
'key' => 'news__type',
'value' => 'general',
'compare' => '='
]
]
]);
The query works but it refuses to sort on publication date. What am I overlooking here? (when I remove the meta_query part it works fine! Am I trying to so something impossible?
By the way - this code is running on a taxonomy page, but that should not be an issue should it?
I have been investigating this further, have turned this into WP_query with the same parameters and get the same result. It is not sorting it! This is de SQL it is performing and indeed it is completely ignoring the orderby clause. Why?
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE 1=1 AND ( ( wp_postmeta.meta_key = 'news__type' AND wp_postmeta.meta_value = 'general' ) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order ASC LIMIT 0, 3
I have been looking at this for hours but can't get it to work.
$newsItems2 = get_posts([
"post_type" => "post",
"post_status" => "publish",
"posts_per_page" => 3,
"orderby" => "date",
"order" => "DESC",
'meta_query' => [
[
'key' => 'news__type',
'value' => 'general',
'compare' => '='
]
]
]);
The query works but it refuses to sort on publication date. What am I overlooking here? (when I remove the meta_query part it works fine! Am I trying to so something impossible?
By the way - this code is running on a taxonomy page, but that should not be an issue should it?
I have been investigating this further, have turned this into WP_query with the same parameters and get the same result. It is not sorting it! This is de SQL it is performing and indeed it is completely ignoring the orderby clause. Why?
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE 1=1 AND ( ( wp_postmeta.meta_key = 'news__type' AND wp_postmeta.meta_value = 'general' ) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'acf-disabled' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID
ORDER BY wp_posts.menu_order ASC LIMIT 0, 3
Share
Improve this question
edited May 27, 2020 at 16:56
thegirlinthecafe
asked May 27, 2020 at 15:23
thegirlinthecafethegirlinthecafe
561 silver badge9 bronze badges
3 Answers
Reset to default 0Hello bro try this will work !
$newsItems2 = get_posts( [
"post_type" => "post",
"post_status" => "publish",
"posts_per_page" => 3,
"orderby" => "date",
"order" => "DESC",
"meta_key" => "news__type",
"meta_value" => "general",
] );
I figured it out, just posting it here for anyone else having this kind of problem: there was a too greedy pre_posts function firing that always changed the sorting order to menu_order. Changed that and now it's working great.
Try adding 'suppress_filters' => true
as a part of the query. There may be a filter operating on the query that is replacing the modifying the order.
本文标签: meta querySorting not working with getposts
版权声明:本文标题:meta query - Sorting not working with get_posts 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742394736a2466691.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论