Raggruppa i risultati di ricerca per origine (tipo di post) e imposta il loro ordine
Per impostazione predefinita, SearchWP restituirà i risultati di tutte le Origini all'interno di un Motore, ordinati in base al peso della pertinenza in ordine decrescente.
In alcuni casi è utile raggruppare i risultati per Origine e all'interno di ciascun gruppo di Origini ordinare i risultati per pertinenza.
Possiamo utilizzare un \SearchWP\Mod per fare proprio questo.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Group SearchWP results by Source, sort by relevance within each Source group. | |
| // @link https://searchwp.com/documentation/knowledge-base/group-results-by-source-post-type/ | |
| add_filter( 'searchwp\query\mods', function( $mods, $query ) { | |
| $mod = new \SearchWP\Mod(); | |
| $mod->order_by( function( $mod ) { | |
| // Search results should be grouped by Sources in this order. | |
| // NOTE: _ALL_ Engine Sources must be included here! | |
| $source_order = [ | |
| 'user', | |
| \SearchWP\Utils::get_post_type_source_name( 'post' ), | |
| \SearchWP\Utils::get_post_type_source_name( 'page' ), | |
| ]; | |
| return "FIELD({$mod->get_foreign_alias()}.source, " | |
| . implode( ',', array_filter( array_map( function( $source_name ) { | |
| global $wpdb; | |
| return $wpdb->prepare( '%s', $source_name ); | |
| }, $source_order ) ) ) . ')'; | |
| }, '', 1 ); | |
| $mods[] = $mod; | |
| return $mods; | |
| }, 10, 2 ); |
Nota: Affinché questa personalizzazione sia pienamente efficace, dovrai personalizzare l'array $source_order con i nomi delle Origini (nell'ordine desiderato) e questo deve includere TUTTE le Origini del Motore.
Lo snippet sopra fa riferimento a una funzione di utilità per recuperare il nome interno dell'Origine di SearchWP per i tipi di post, l'origine Utenti si chiama user e devono essere inclusi anche tutti gli altri nomi di Origine.
Se desideri applicare condizionalmente questo ordinamento, puoi esaminare la variabile $query per determinare se desideri uscire anticipatamente o applicare questo \SearchWP\Mod restituendola.
Vedi anche: Fai in modo che un tipo di post appaia sopra qualsiasi altro

