Fazer um tipo de postagem aparecer acima de qualquer outro
Por padrão, o SearchWP retorna resultados classificados por relevância usando os pesos definidos na configuração do seu Mecanismo.
Existem alguns casos em que você pode querer que um tipo de postagem específico apareça primeiro, mesmo que seu peso de relevância não seja o mais alto.
Podemos fazer isso personalizando a forma como o SearchWP calcula a relevância e oferecendo um ‘peso bônus’ extraordinário para qualquer Produto retornado, fazendo com que ele suba para o topo dos resultados.
Este peso bônus será aplicado a todos os Produtos, portanto, a classificação dos Produtos ainda respeitará a relevância calculada. Qualquer resultado que não seja um Produto será classificado por sua relevância abaixo de qualquer Produto que tenha recebido o peso bônus.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Give Products extraordinary weight boost to ensure Products show up first. | |
| // @link https://searchwp.com/documentation/knowledge-base/post-type-first-top/ | |
| add_filter( 'searchwp\query\mods', function( $mods ) { | |
| $post_type = 'product'; // Post type name. | |
| $source = \SearchWP\Utils::get_post_type_source_name( $post_type ); | |
| $mod = new \SearchWP\Mod( $source ); | |
| $mod->relevance( function( $runtime ) use ( $source ) { | |
| global $wpdb; | |
| return $wpdb->prepare( | |
| "IF( {$runtime->get_foreign_alias()}.source = %s, '999999999999', '0' )", | |
| $source | |
| ); | |
| } ); | |
| $mods[] = $mod; | |
| return $mods; | |
| } ); |
Observe que o name do tipo de postagem na linha 7 pode ser alterado para qualquer nome de tipo de postagem registrado para obter o mesmo resultado.
Veja também: Agrupar resultados de pesquisa por origem (tipo de postagem) e definir sua ordem

