Définir l'ordre de tri secondaire pour les résultats avec une pertinence correspondante
Il arrivera que la pertinence de plusieurs résultats de recherche soit exactement la même, laissant à MySQL le soin de décider comment trier ces résultats à pertinence égale.
En utilisant un \SearchWP\Mod, vous pouvez spécifier comment vous souhaitez que les résultats à pertinence égale soient triés.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Add secondary sort to SearchWP results to sort matching | |
| // relevance results by Title in ASC order. | |
| add_filter( 'searchwp\query\mods', function( $mods, $query ) { | |
| global $wpdb; | |
| $mod = new \SearchWP\Mod(); | |
| $mod->set_local_table( $wpdb->posts ); | |
| $mod->on( 'ID', [ 'column' => 'id' ] ); | |
| $mod->order_by( function( $mod ) { | |
| return $mod->get_local_table_alias() . '.post_title'; | |
| }, 'ASC', 99 ); | |
| $mods[] = $mod; | |
| return $mods; | |
| }, 30, 2 ); |
En utilisant cet extrait, nous indiquons à SearchWP de mettre en œuvre un mécanisme de tri *secondaire* pour trier les résultats à pertinence égale par leur titre de publication défini dans l'ordre ASC.
Ceci est une clause de tri *secondaire* en raison de la priorité définie dans l'appel de la méthode order_by() qui est de 99. Lors de la définition d'une clause order_by() dans un \SearchWP\Mod, chaque clause est générée selon sa priorité dans l'ordre ASC.
Il existe un ordre par défaut principal pour toutes les requêtes SearchWP à la priorité 10 pour trier par pertinence dans l'ordre DESC.

