Come utilizzare il codice PHP per creare una pagina di ricerca avanzata in WordPress
Cos’è la ricerca avanzata?
La ricerca avanzata all’interno di WordPress è uno strumento che consente agli utenti di effettuare query personalizzate, filtrando i post o le pagine da visualizzare in base ai parametri forniti nel modulo di ricerca. Ci sono diversi elementi aggiuntivi che possono essere aggiunti al modulo iniziale, tra cui tag, categorie, date, autori e persino parole chiave personalizzate.
Come implementare una pagina di ricerca avanzata in WordPress?
Per creare una pagina di ricerca avanzata con WordPress, inizia a creare un nuovo file chiamato cerca.php all’interno della cartella del tema usando un semplice editor di testo e aggiungendo il seguente codice PHP al file:
function advanced_search_query($query) {
if ( $query->is_search() ) {
$query->set('post_type', array( 'post', 'page' ));
$query->set('post_status', array( 'publish' ));
}
return $query;
}
add_action( 'pre_get_posts', 'advanced_search_query' );
?>
Questo codice aiuta a impostare la ricerca in modo da comprendere entrambi i post e le pagine. Successivamente, è possibile aggiungere altri filtri al codice, come segue:
$query->query_vars['tag'] = 'tagname';
$query->query_vars['category_name'] = 'categoria';
$query->query_vars['author'] = 'nome-autore';
$query->query_vars['date_query'] = array(
array(
'year' => 2018,
'month' => 7
),
array(
'year' => 2016,
'month' => 7,
'compare' => '<='
)
);
$query->query_vars['meta_query'] = array(
array(
'value' => '15.00',
'field' => 'prezzo',
'compare' => '>'
)
);
È inoltre possibile utilizzare query_posts() o get_posts() se si desidera richiamare i risultati in una pagina o in un post.
Come modificare il modulo di ricerca?
Un ultimo passaggio necessario è aprire la pagina cerca.php ed aggiungere il codice HTML necessario per creare un modulo di ricerca in grado di ricevere i parametri forniti nel codice PHP sopra scritto.
Una volta salvato il file, la pagina di ricerca avanzata in WordPress è pronta per essere utilizzata dagli utenti.