wake-up-neo.net

Sortieren Sie die Suchergebnisse nach Beitragstyp

Ich muss meine Suchergebnisse nach benutzerdefiniertem Beitragstyp sortieren. Das Problem: Die Bestellung ist benutzerdefiniert.

Ich habe 5 verschiedene Beitragstypen und die Reihenfolge sieht so aus:

  1. künstler
  2. kunstwerk
  3. seite
  4. post
  5. veröffentlichung

Ich möchte, dass die Reihenfolge so ist:

  1. künstler
  2. post
  3. kunstwerk
  4. veröffentlichung
  5. seite

Hier ist, was ich bis jetzt habe, die Elemente sind nach Beitragstyp gruppiert und werden nach Titel sortiert. Wunderbar Jetzt brauche ich nur noch die individuelle Bestellung.

Irgendein Hinweis?

add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby ){
   global $wpdb;
    if( ! is_admin() && is_search() ) :
        $orderby = "{$wpdb->prefix}posts.post_type ASC, {$wpdb->prefix}posts.post_title ASC";
    endif;
    return $orderby;
}
4
honk31

Ich habe den Schlüssel gefunden: SQL CASE Expression

add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );
function order_search_by_posttype( $orderby, $wp_query ){
    if( ! $wp_query->is_admin && $wp_query->is_search ) :
        global $wpdb;
        $orderby =
            "
            CASE WHEN {$wpdb->prefix}posts.post_type = 'artist' THEN '1' 
                 WHEN {$wpdb->prefix}posts.post_type = 'post' THEN '2' 
                 WHEN {$wpdb->prefix}posts.post_type = 'artwork' THEN '3' 
                 WHEN {$wpdb->prefix}posts.post_type = 'publication' THEN '4' 
            ELSE {$wpdb->prefix}posts.post_type END ASC, 
            {$wpdb->prefix}posts.post_title ASC";
    endif;
    return $orderby;
}
10
honk31