Question

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
Was it helpful?

Solution 2

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.

OTHER TIPS

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",
 ] );

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top