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

3 Answers 3


Hello 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",
 ] );
  • thanks for the suggestion but this did not solve the problem either unfortunately. May 27, 2020 at 19:24

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.

  • I tried that already but it didn't make any difference. Can't get my head around it. May 27, 2020 at 15:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.