SearchWP Documentation

Veja o guia de instalação, navegue pela Base de Conhecimento, descubra os muitos hooks do SearchWP

Adicionar uma Caixa Suspensa de Seleção de Motor ao Formulário de Pesquisa

Um dos recursos mais populares do SearchWP é a capacidade de criar vários motores de busca. Na maioria das vezes, múltiplos motores resultam em múltiplos formulários de pesquisa, cada um com seu próprio modelo de resultados de pesquisa. Também é possível, em vez disso, usar seu formulário de pesquisa e modelo de resultados padrão para qualquer motor de busca no SearchWP.

Este artigo explicará como você pode realizar três abordagens diferentes para adicionar um menu suspenso de Motor ao seu formulário de pesquisa.

  1. Crie seu próprio formulário de pesquisa com um menu suspenso de Motor
  2. Personalize a Extensão de Shortcodes para incluir um menu suspenso de Motor
  3. Personalize o formulário de pesquisa padrão para incluir um menu suspenso de seleção de Motor

Construindo seu próprio formulário de pesquisa

Construir seu próprio formulário de pesquisa envolve editar os arquivos do seu tema para incluir os campos de entrada e botões que queremos incluir. No nível mais básico, você pode adicionar o seguinte ao arquivo de modelo do seu tema onde você gostaria que o formulário aparecesse:

<!-- https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/ -->
<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search..." value="<?php echo esc_attr( get_search_query() ); ?>" name="s" title="Search for:" />
</label>
<?php
$engines = \SearchWP\Settings::get_engines();
$current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default';
?>
<select name="swpengine" id="swpengine">
<?php foreach ( $engines as $engine_name => $engine ) : ?>
<option value="<?php echo esc_attr( $engine_name ); ?>"
<?php selected( $current_engine, $engine_name ); ?>>
<?php echo esc_html( $engine->get_label() ); ?>
</option>
<?php endforeach; ?>
</select>
<input type="submit" class="search-submit" value="Search" />
</form>
view raw searchform.php hosted with ❤ by GitHub

Observação: 'Padrão' é a saída para o motor padrão, você pode personalizá-lo editando a linha 14 nesse trecho.

Este formulário é estruturado como o formulário de pesquisa padrão do WordPress, mas também inclui um select contendo todos os seus Motores SearchWP definidos.

Depois que seu formulário for configurado, ele redirecionará para o seu modelo de resultados de pesquisa padrão, mas também precisamos dizer ao SearchWP qual motor usar para a pesquisa.

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/
if ( ! empty( $_GET['swpengine'] ) ) {
add_filter( 'searchwp\query\args', function( $args ) {
$args['engine'] = $_GET['swpengine'];
return $args;
} );
}
view raw functions.php hosted with ❤ by GitHub

Este trecho é o único responsável por verificar qual opção foi escolhida no menu suspenso de Motores e usar essa configuração de motor para a pesquisa.

Use a Extensão de Shortcodes do SearchWP

A Extensão de Shortcodes do SearchWP permite que você gere facilmente formulários de pesquisa e controle páginas de resultados de pesquisa usando Shortcodes do WordPress. Aqui está um exemplo de formulário de pesquisa que inclui um menu suspenso de Categorias para escolher:

Observação: requer Shortcodes versão 1.2.1 ou superior

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/
// ***** UNCOMMENT THIS IF YOU WANT TO USE SHORTCODES IN WIDGETS
// add_filter( 'widget_text', 'do_shortcode' );
// Output a SearchWP Engines dropdown
function my_searchwp_shortcodes_inject_engines() { ?>
<p class="searchwp-shortcodes-engines">
<?php
$engines = \SearchWP\Settings::get_engines();
$current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default';
?>
<select name="swpengine" id="swpengine">
<?php foreach ( $engines as $engine_name => $engine ) : ?>
<option value="<?php echo esc_attr( $engine_name ); ?>"
<?php selected( $current_engine, $engine_name ); ?>>
<?php echo esc_html( $engine->get_label() ); ?>
</option>
<?php endforeach; ?>
</select>
</p><?php
}
add_action( 'searchwp_shortcodes_after_input', 'my_searchwp_shortcodes_inject_engines' );
view raw functions.php hosted with ❤ by GitHub

Isso personalizará o formulário de Shortcodes do SearchWP para incluir também nosso menu suspenso de Motores. Isso apenas lida com o menu suspenso, no entanto. Ainda precisamos dizer ao SearchWP qual motor usar ao realizar uma pesquisa. Isso pode ser feito adicionando o seguinte ao seu plugin de Personalizações do SearchWP (não ao arquivo de modelo do tema onde você adicionou o código do formulário).

<?php
// @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/
if ( ! empty( $_GET['swpengine'] ) ) {
add_filter( 'searchwp\query\args', function( $args ) {
$args['engine'] = $_GET['swpengine'];
return $args;
} );
}
view raw functions.php hosted with ❤ by GitHub

Esse trecho verificará a solicitação de pesquisa para ver qual motor foi escolhido no menu suspenso e o usará para a pesquisa atual.

Modifique o formulário de pesquisa padrão para incluir um menu suspenso de Motores

O WordPress nos permite filtrar o formulário de pesquisa padrão encontrado em muitos temas. Ele é gerado por uma chamada a get_search_form(), que pode ser completamente personalizada incluindo um arquivo chamado searchform.php em seu diretório de tema, ou através do filtro get_search_form. Para este exemplo, usaremos o filtro get_search_form.

All hooks should be added to your custom SearchWP Customizations Plugin.

Para incluir um menu suspenso de Motores no formulário de pesquisa padrão do seu site, adicione o seguinte ao seu plugin de Personalizações do SearchWP:

<?php
// Adds a SearchWP Engines dropdown to the search form
// @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/
function my_searchwp_get_search_form_with_engines_dropdown( $form ) {
ob_start(); ?>
<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<label>
<span class="screen-reader-text">Search For</span>
<input type="search" class="search-field" placeholder="Search..." value="<?php echo esc_attr( get_search_query() ); ?>" name="s" title="Search for:" />
</label>
<?php
$engines = \SearchWP\Settings::get_engines();
$current_engine = isset( $_GET['swpengine'] ) ? esc_attr( $_GET['swpengine'] ) : 'default';
?>
<select name="swpengine" id="swpengine">
<?php foreach ( $engines as $engine_name => $engine ) : ?>
<option value="<?php echo esc_attr( $engine_name ); ?>"
<?php selected( $current_engine, $engine_name ); ?>>
<?php echo esc_html( $engine->get_label() ); ?>
</option>
<?php endforeach; ?>
</select>
<input type="submit" class="search-submit" value="Search" />
</form>
<?php return ob_get_clean();
}
add_filter( 'get_search_form', 'my_searchwp_get_search_form_with_engines_dropdown' );
view raw functions.php hosted with ❤ by GitHub

O código do formulário usado aqui é baseado no formulário de pesquisa padrão que acompanha o WordPress. Existe a chance de seu tema ter personalizado o formulário anteriormente, e você simplesmente deseja adicionar o menu suspenso a ele. Você pode simplesmente modificar o código do formulário para corresponder ao que foi enviado com seu tema e adicionar as linhas 11-22 desse exemplo de código onde você deseja que seu menu suspenso de Motores apareça.

Este trecho apenas modifica o formulário de pesquisa, ainda precisamos capturar o valor do menu suspenso e dizer ao SearchWP para usar o Motor escolhido para a pesquisa. Podemos fazer isso adicionando o seguinte ao seu plugin de personalizações do SearchWP (não ao arquivo de modelo do tema onde você adicionou o código do formulário).

<?php
// @link https://searchwp.com/documentation/knowledge-base/engine-select-dropdown/
if ( ! empty( $_GET['swpengine'] ) ) {
add_filter( 'searchwp\query\args', function( $args ) {
$args['engine'] = $_GET['swpengine'];
return $args;
} );
}
view raw functions.php hosted with ❤ by GitHub

Crie uma Experiência de Pesquisa WordPress Melhor Hoje

Nunca mais perca visitantes para resultados de pesquisa inúteis. O SearchWP torna a criação de sua própria pesquisa inteligente do WordPress rápida e fácil.

Get SearchWP Now
Ícone de Múltiplos Mecanismos de Busca