Definir orden secundario por clasificación para resultados con relevancia coincidente
Habrá ocasiones en las que la relevancia de varios resultados de búsqueda sea exactamente la misma, dejando que MySQL decida cómo ordenar esos resultados con relevancia coincidente.
Usando un \SearchWP\Mod puedes especificar en su lugar cómo quieres que se ordenen los resultados con relevancia coincidente.
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 ); |
Usando este fragmento le estamos diciendo a SearchWP que implemente un mecanismo de ordenación secundario para ordenar los resultados con puntuaciones de relevancia coincidentes por su Título de publicación definido en orden ASC.
Esta es una cláusula de ordenación secundaria debido a la prioridad establecida en la llamada al método order_by(), que es 99. Al establecer una cláusula order_by() en un \SearchWP\Mod, cada cláusula se genera según su prioridad en orden ASC.
Existe un orden predeterminado principal para todas las consultas de SearchWP con prioridad 10 para ordenar por relevance en orden DESC.

