Usando o Elementor para Motores Suplementares
Usar o Elementor para projetar e construir formulários e resultados de pesquisa suplementares requer alguns passos, mas é possível!
Comece criando uma nova Página
Enquanto estiver logado no Admin do WordPress, comece criando uma nova Página usando o Elementor.
Arraste um Widget de Formulário de Pesquisa:
IMPORTANTE: Edite o ID CSS no painel Avançado para o Formulário de Pesquisa e dê a ele um ID exclusivo. Para este artigo, usaremos searchwp-supplemental-form:
Abaixo do Widget de Formulário de Pesquisa, adicione um Widget de Posts:
IMPORTANTE: Um ID de Consulta deve ser definido para que possamos marcá-lo em um hook. Expanda o painel Consulta para o Widget de Posts e insira um ID de Consulta exclusivo. Para este artigo, usaremos searchwp-supplemental:
Esses dois Widgets facilitarão a pesquisa em seu motor suplementar.
Adicione os hooks necessários
Alguns hooks são necessários para fazer tudo funcionar. Você pode adicioná-los ao functions.php do seu tema:
| <?php | |
| // @link https://searchwp.com/documentation/knowledge-base/using-elementor-for-supplemental-engines/ | |
| // We need to flag the search form. | |
| add_action( 'elementor_pro/search_form/after_input', function( $form ) { | |
| // Check to see if this is the right Search Form. | |
| $settings = $form->get_data( 'settings' ); | |
| if ( isset( $settings['_element_id'] ) && 'searchwp-supplemental-form' == $settings['_element_id'] ) { | |
| ?> | |
| <input type="hidden" name="searchwp" value="supplemental" /> | |
| <?php | |
| } | |
| } ); | |
| // Redirect when applicable. | |
| add_action( 'template_redirect', function() { | |
| if ( is_search() && ! empty( $_GET['searchwp'] ) && 'supplemental' === $_GET['searchwp'] ) { | |
| wp_safe_redirect( add_query_arg( array( | |
| 'swpquery' => get_search_query(), | |
| ), get_permalink( 18 ) ) ); | |
| exit(); | |
| } | |
| } ); | |
| // Provide Search results. | |
| add_filter( 'elementor/query/query_args', function( $query_vars, $widget ) { | |
| // Check to see if this is the right Widget. | |
| $settings = $widget->get_data( 'settings' ); | |
| if ( is_admin() | |
| || ! isset( $settings['posts_query_id'] ) | |
| || ( ! empty( $settings['posts_query_id'] ) && 'searchwp-supplemental' !== $settings['posts_query_id'] ) ) { | |
| return $query_vars; | |
| } | |
| // This form field was set up in Elementor. | |
| $query = isset( $_GET['swpquery'] ) ? sanitize_text_field( $_GET['swpquery'] ) : ''; | |
| if ( ! empty( $query ) ) { | |
| // Perform the search. | |
| $searchwp = new SWP_Query( array( | |
| 's' => $query, | |
| 'engine' => 'supplemental', // Engine to search. | |
| 'fields' => 'ids', | |
| 'posts_per_page' => -1, | |
| ) ); | |
| if ( empty( $searchwp->posts ) ) { | |
| $searchwp->posts = array( 0 ); | |
| } | |
| // Override the query vars with SearchWP results. | |
| $query_vars['post__in'] = $searchwp->posts; | |
| $query_vars['post_type'] = 'any'; // Restricted by post__in. | |
| $query_vars['post_status'] = 'any'; // Restricted by post__in. | |
| $query_vars['orderby'] = 'post__in'; // Order by post__in. | |
| $query_vars['order'] = 'DESC'; // Order descending. | |
| } else { | |
| // Force no results. | |
| $query_vars['post__in'] = array( 0 ); | |
| } | |
| return $query_vars; | |
| }, 10, 2 ); |
O primeiro hook (linhas 7-18) anexa um input oculto ao formulário de pesquisa.
O segundo hook (linhas 20-28) procura por esse input oculto e, se encontrado, redirecionará para a nossa página de motor Suplementar.
OBSERVAÇÃO: O ID da Página neste artigo é 18, você deve atualizar o ID (veja a linha 22) para o ID da sua Página recém-criada com a qual estamos trabalhando.
O terceiro e último hook (linhas 30-68) são responsáveis por substituir o conteúdo do Widget de Posts que adicionamos com os resultados do SearchWP.
OBSERVAÇÃO: O nome do motor suplementar deve ser atualizado (veja a linha 45) para corresponder ao nome do motor suplementar que você deseja pesquisar.





