it-swarm.com.de

So ändern Sie die Richtung der Abfragereihenfolge mit $ query-> set ('order', 'ASC'); In einem pre_get_posts-Filter?

Laut: http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

Die Standardbestellung ist DESC und die Standardbestellung ist das Datum.

In einem benutzerdefinierten Plugin wendet das Plugin den folgenden pre_get_posts-Filter an:

function custom_search_filter($query) {

    //echo '<pre>'; var_dump($_GET); echo '</pre>'; die;
    //echo '<pre>'; var_dump($query); echo '</pre>'; die; 

    if ($query->is_search) {

        /* -------------------------------------------------- */

        $query->set('orderby', 'date');

        if ( isset($_GET['order']) ) {

            if ( $_GET['order'] == 'DESC' ) {

                $query->set('order', 'DESC');

                //echo '<pre>'; var_dump($_GET); echo '</pre>'; die;

            } else {

                $query->set('order', 'ASC');

                //echo '<pre>'; var_dump($_GET); echo '</pre>'; die;

            }

        }

        /* -------------------------------------------------- */

    }

    return $query; 

}


add_filter('pre_get_posts', 'custom_search_filter', 999);

Die GET-URL setzt die Reihenfolge auf ASC:

http: //meinewebsite.lh/? post_type% 5B% 5D = Ressourcen & custom-search-my-term = Hinzufügen + Neu + Begriff & s = CustomSearch & order = ASC

Und Debuggen der Abfrage, die ich erhalte:

SELECT SQL_CALC_FOUND_ROWS wp_posts. * FROM wp_posts WHERE 1 = 1 AND wp_posts.post_type = 'resources' AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.menu_order, wp_posts.post_date DESC LIMIT 0, 10 "

In SQL oben können Sie Folgendes feststellen: ORDER BY ... DESC

Gibt es einen Grund, warum die Reihenfolge nicht von DESC zu ASC wechselt, wenn tatsächlich $ _GET ['order'] == 'ASC' ist?

Danke im Voraus.

Ja ich habe es verstanden:

function custom_search_orderby($orderby) {

    global $wpdb;

    if  ( is_search() ) {

        if ( isset($_GET['order']) ) {

            if ( $_GET['order'] == 'DESC' ) {

                $orderby = $wpdb->prefix . "posts.post_date DESC";

            } else {

                $orderby = $wpdb->prefix . "posts.post_date ASC";

            }

        }

    }

    return $orderby;

}

add_filter('posts_orderby', 'custom_search_orderby', 999);