WordPress Ricerca in tutti i campi

Hai creato un Template Custom per WordPress, hai anche impostato dei campi personalizzati per i tuo post, ma ora vuoi abilitare la ricerca di WordPress anche ad essi? Nelle prossime righe ti spiegherò come farlo in pochi e semplici passaggi.

Infatti la funzione base WP Search effettua la query di ricerca solo nei campi di default, quali titolo e contenuti. Esistono personalizzazioni della query di ricerca  per aggiungere altri elementi, ma se hai impostato molti campi personalizzati ai post questo potrebbe essere un lavoro molto lungo e noioso.

Per fortuna che con una piccola funzione, da inserire nel file functions.php del template tutto è risolvibile.

WordPress Search in all fields

WordPress Search in all fields

La funzione che trovate qui sotto in pratica dice a WordPress di ampliare la ricerca a tutti i campi del post.

global $wpdb;

// Nel caso di un form di ricerca custom decommentare sotto
// $keyword = sanitize_text_field( $_POST['keyword'] );

// Nel caso invece del form di ricerca base di WordPress
$keyword = get_search_query();
$keyword = '%' . $wpdb->esc_like( $keyword ) . '%';

// Ricerca in tutti i campi
$post_ids_meta = $wpdb->get_col( $wpdb->prepare( "
    SELECT DISTINCT post_id FROM {$wpdb->postmeta}
    WHERE meta_value LIKE '%s'
", $keyword ) );

// Ricerca nel post_title e nel post_content
$post_ids_post = $wpdb->get_col( $wpdb->prepare( "
    SELECT DISTINCT ID FROM {$wpdb->posts}
    WHERE post_title LIKE '%s'
    OR post_content LIKE '%s'
", $keyword, $keyword ) );

$post_ids = array_merge( $post_ids_meta, $post_ids_post );

// Args Query
$args = array(
    'post_type'   => 'post',
    'post_status' => 'publish',
    'post__in'    => $post_ids,
);

$query = new WP_Query( $args );

if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post();

// Inserire ciò che si vuole stampare qui dentro

endwhile; endif;

Questo codice è stato testato su un totale di oltre 1500 post pubblicati, ed è funzionante.
Se avete qualche domanda o qualche dubbio non esitate a contattarci!

Invece per maggiori informazioni sul mondo di WordPress ti consiglio queste letture:
WordPress (Pocket)
Sviluppare con WordPress
WordPress. La guida completa. Creare blog e siti professionali
Seguiteci anche su Facebook, Google Plus, Tumblr e Twitter, per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram