So bestellen Sie getrennte benutzerdefinierte Post-Suchergebnisse

Ich benutze die Technik, die hier beschrieben wird, und benutze posts_groupby Problem, um meine Suchergebnisse zu trennen und sie nach dem Post-Typ zu gruppieren. Dies bedeutet, dass ich den folgenden Code habe.

In den functionen.php

add_filter('posts_orderby', 'group_by_post_type', 10, 2); function group_by_post_type($orderby, $query) { global $wpdb; if ($query->is_search) { return $wpdb->posts . '.post_type DESC'; } // provide a default fallback return if the above condition is not true return $orderby; } 

In der Suche.php

 post_type){ $typecount = $typecount + 1; if ($typecount > 1){ echo ''; //close type container } // save the post type. $last_type = $post->post_type; //open type container switch ($post->post_type) { case 'post': echo "

News Articles

    "; break; case 'page': echo "

    Pages

      "; break; case 'work': echo "

      Projects

        "; break; case 'bootlegs': echo "

        Bootlegs

          "; break; case 'directors': echo "

          Directors

            "; break; //add as many as you need. } } ?>

Dies funktioniert einwandfrei, außer dass ich keine Kontrolle über die Reihenfolge habe, in der die benutzerdefinierten Post-Typen angezeigt werden. Ich vermute, sie werden von einer internen ID-Nummer bestellt, aber ich muss die Kontrolle über sie haben.

Wie kann ich das erreichen?

Vielen Dank!

Solutions Collecting From Web of "So bestellen Sie getrennte benutzerdefinierte Post-Suchergebnisse"

Welche Art von Kontrolle willst du genau? Es gibt zum Beispiel Plugins, die eine Benutzeroberfläche bieten, über die Sie Posts mit verschiedenen Parametern bestellen können.

Wenn Sie sie alle nur nach einem Parameter bestellen möchten, der sich nicht ändert, können Sie ihn einfach zu Ihrer Abfrage hinzufügen (da Sie mehrere Bedingungen erfüllen können ):

 if ($query->is_search) { return $wpdb->posts . '.post_type DESC, title DESC'; } 

Bearbeiten: Hier ist eine weitere Frage, die Sie nützlich finden könnten.

In diesem Fall ist die Fallback (sekundäre) Reihenfolge der Titel.

In functions.php :

 add_filter( 'pre_get_posts', 'ordering_post_title_type'); function ordering_post_title( $query ) { if ( $query->is_search ) { $query->set('orderby','type title'); $query->set('order','ASC'); } return $query; }