Home funzioni Creare una funzionalità di ricerca personalizzata

Creare una funzionalità di ricerca personalizzata

31
0
Creare una funzionalità di ricerca personalizzata
Creare una funzionalità di ricerca personalizzata

Per creare una funzionalità di ricerca personalizzata in WordPress che consenta di cercare nei meta post e nelle categorie, puoi utilizzare la classe WP_Query. Ecco un esempio pratico per implementare questa funzionalità.

Creare una funzionalità di ricerca personalizzata
Creare una funzionalità di ricerca personalizzata

Form di Ricerca Personalizzato

Puoi aggiungere un form di ricerca personalizzato nel tuo tema per utilizzare questa funzionalità. Ad esempio:

<?php
// Funzione per eseguire la ricerca personalizzata
function custom_search_query( $search_query ) {
    if ( isset( $_GET['s'] ) && ! empty( $_GET['s'] ) ) {
        $search_term = sanitize_text_field( $_GET['s'] );
        $meta_key = isset( $_GET['meta_key'] ) ? sanitize_text_field( $_GET['meta_key'] ) : '';

        $args = array(
            'post_type'      => 'post', // Tipo di post da cercare (modifica se necessario)
            'post_status'    => 'publish',
            's'              => $search_term, // Cerca nel titolo e nel contenuto
            'meta_query'     => array(), // Query per i meta post
            'tax_query'      => array(), // Query per le categorie
        );

        // Aggiunge una condizione per cercare nei metadati, se specificata
        if ( $meta_key ) {
            $args['meta_query'][] = array(
                'key'     => $meta_key,
                'value'   => $search_term,
                'compare' => 'LIKE',
            );
        }

        // Aggiunge una condizione per cercare nelle categorie
        $args['tax_query'][] = array(
            'taxonomy' => 'category', // Tassonomia (categorie in questo caso)
            'field'    => 'name', // Cerca per nome
            'terms'    => $search_term, // Termine di ricerca
            'operator' => 'LIKE',
        );

        // Esegue la query
        $query = new WP_Query( $args );

        if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {
                $query->the_post();
                ?>
                <div class="search-result">
                    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p><?php the_excerpt(); ?></p>
                </div>
                <?php
            }
            wp_reset_postdata();
        } else {
            echo '<p>Nessun risultato trovato.</p>';
        }
    }
}

Funzionamento

  1. Cerca nei Metadati:
    • Se il parametro meta_key è specificato, la funzione cerca nei meta post corrispondenti utilizzando meta_query.
  2. Cerca nelle Categorie:
    • Se il termine corrisponde a una categoria, la ricerca lo includerà utilizzando tax_query.
  3. Reset della Query:
    • Alla fine, la query viene resettata con wp_reset_postdata per evitare conflitti con altre query.
<form method="get" action="<?php echo home_url( '/' ); ?>">
    <input type="text" name="s" placeholder="Cerca..." value="<?php echo get_search_query(); ?>" />
    <select name="meta_key">
        <option value="">-- Cerca in --</option>
        <option value="custom_meta_key">Metadato personalizzato</option>
        <!-- Aggiungi altre opzioni se necessario -->
    </select>
    <button type="submit">Cerca</button>
</form>

Note Importanti

  • Sanitizzazione dei Dati: Usa sempre funzioni come sanitize_text_field per prevenire attacchi XSS.
  • Compatibilità: Questo codice è compatibile con WordPress e funziona su tutti i temi standard.
  • Estendibilità: Puoi aggiungere tassonomie o altri metadati alla ricerca semplicemente espandendo le query.
Previous articleGoogle Login (autenticazione con Google) con Google OAuth 2.0.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.