2017-12-28 5 views
0

Ich möchte Beiträge in der Reihenfolge, die ich anfordern.Wordpress WP_Query löschen ORDER BY wp_posts.menu_order

Glücklicherweise gab es ein Abfrageargument -> orderby = 'post_name__in'.

Aber ich bekomme Beiträge in anderer Reihenfolge.

Und ich sehe die Abfrage der Anfrage.

Hier

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_name 
IN (
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
AND wp_posts.post_type = 'post' 
AND ((wp_posts.post_status = 'publish')) 
ORDER BY wp_posts.menu_order, 
FIELD( 
    wp_posts.post_name, 
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
LIMIT 0, 9 

Ich finde, dass ORDER BY wp_posts.menu_order ein Problem war.

Wenn ich es lösche und dann auf phpmyadmin abfragen, funktioniert es gut.

Ich bekomme Beiträge in der Reihenfolge, die ich will.

Also, wie kann ich das löschen ORDER BY wp_posts.menu_order mit hook & Filter oder eine andere WordPressful Weg?

Antwort

0

Ich fand die Antwort!

Die wp_posts.menu_order wurde hinzugefügt wegen Beitragstypen Bestellung plugin.

In diesem Plugin

add_filter('posts_orderby', array($this, 'posts_orderby'), 99, 2); 
~ 
~ 
~ 
//check for ignore_custom_sort 
if (isset($query->query_vars['ignore_custom_sort']) && $query>query_vars['ignore_custom_sort'] === TRUE) 
    return $orderBy; 
if(trim($orderBy) == '') 
    $orderBy = "{$wpdb->posts}.menu_order " . $order; 
else 
    $orderBy = "{$wpdb->posts}.menu_order". $order .", " . $orderBy; 
~ 
~ 
return $orderBy; 

So füge ich $args['ignore_custom_sort'] = true zu meiner Anfrage Argument.

Und das funktioniert!

1

Eine andere Lösung, um das Plugin nicht direkt zu ändern, ist das Entfernen der Post-Typ-Reihenfolge. Ich habe eine andere gefunden, die "Intuitive Custom Post Order" heißt und sie nicht in die Reihenfolge einordnet, die wir nicht bestellen wollen und die vollständiger ist.

+0

Vielen Dank für Ihre Mühe! – RPF

Verwandte Themen