Adicionar Peso de Relevância a Campos de Checkbox Verdadeiro/Falso do ACF
Advanced Custom Fields é um plugin fantástico que torna a personalização do seu site muito fácil. Ele não só facilita a entrada de conteúdo, como também pode ajudar a tornar o gerenciamento de outros detalhes mais fácil para os gerentes de conteúdo. Utilizar ACF e SearchWP é algo que muitos clientes aproveitam!
Uma coisa que você pode fazer é configurar o ACF com um campo de caixa de seleção que controla se algum atributo do post atual é verdadeiro ou falso. Por exemplo, talvez alguns de seus posts sejam considerados proprietários e você queira garantir que esses posts recebam mais peso quando as pesquisas forem realizadas.
Veja também: Advanced Custom Fields e SearchWP
Usando alguns dos hooks do SearchWP, isso é facilmente realizado!
All hooks should be added to your custom SearchWP Customizations Plugin.
Assumindo que seu campo de Caixa de Seleção do ACF tenha o nome proprietary, um peso bônus de 1000 será adicionado a qualquer post que tenha a Caixa de Seleção Verdadeiro/Falso do Advanced Custom Field marcada:
| <?php | |
| // Add Relevance Weight to ACF True/False Checkbox Fields in SearchWP. | |
| // @link https://searchwp.com/documentation/knowledge-base/add-relevance-acf-checkbox/ | |
| add_filter( 'searchwp\query\mods', function( $mods ) { | |
| global $wpdb; | |
| $my_meta_key = 'proprietary'; // ACF True/False name. | |
| $bonus_weight = 1000; // Extra weight to add when checkbox is ticked. | |
| $mod = new \SearchWP\Mod(); | |
| $mod->set_local_table( $wpdb->postmeta ); | |
| $mod->on( 'post_id', [ 'column' => 'id' ] ); | |
| $mod->on( 'meta_key', [ 'value' => $my_meta_key ] ); | |
| $mod->weight( function( $runtime_mod ) use ( $bonus_weight ) { | |
| $local_alias = $runtime_mod->get_local_table_alias(); | |
| return "IF({$local_alias}.meta_value+0 = 1, {$bonus_weight}, 0)"; | |
| } ); | |
| $mods[] = $mod; | |
| return $mods; | |
| } ); |
Você pode personalizar os hooks para usar qualquer nome de campo do ACF editando a linha 9 com o nome do campo aplicável, e se você quiser ajustar o peso bônus que é usado, você pode editar a linha 10.

