Come espandere la ricerca di WordPress


Come espandere la ricerca di WordPress

Oggi vi farò vedere come si espande la ricerca di WordPress oltre il titolo del post e il contenuto. Possiamo far sì di cercare anche nei campi personalizzati per esempio.

Iniziamo per aprire il file searchform.php del template e inserire un altro campo di tipo “hidden” con il nome “ricerca generale” con il valore 1:

<input type="hidden" value="1" name="ricerca_generale">

Questo ci servirà perché in questo modo sapremo quando attivare la ricerca generale tramite una nuova query.

Sulla pagina search.php, inseriamo un condizionale “if” all’inizio per vedere se gli è stato passato il valore “ricerca_generale”

<?php 
$ricerca_generale=$_REQUEST['ricerca_generale'];
if ($ricerca_generale=="1")
{

E quindi se questo succede, creiamo una nuova query personalizzata:

<?php 
$query_ricerca_generale = "
SELECT DISTINCT wp_posts.ID,wp_posts.post_status,wp_posts.post_title,wp_posts.post_content ,categorie.name AS categoria,
costruttore.costruttore AS costruttore
FROM 
wp_posts, 
categorie, 
costruttore, 
wp_terms,
wp_term_relationships
WHERE wp_posts.ID = costruttore.post_id
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_term_relationships.term_taxonomy_id = wp_terms.term_id
AND wp_posts.ID = costruttore.post_id
AND wp_posts.ID = categorie.ID
AND wp_posts.post_status='publish'
AND
(
wp_posts.post_content LIKE '%".$key."%'
OR wp_posts.post_title LIKE '%".$key."%'
OR costruttore.costruttore LIKE '%".$key."%'
OR categorie.name LIKE '%".$key."%'
)
GROUP BY categorie.ID;
";

Le tabelle “categorie” e “costruttore” sono 2 tabelle di tipo VIEW create tramite queste 2 query:

1) create view categorie as 
SELECT wp_posts.ID,  wp_terms.name
FROM wp_term_taxonomy, wp_posts, wp_term_relationships, wp_terms
WHERE 
wp_terms.term_id = wp_term_taxonomy.term_id
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_term_taxonomy.taxonomy = "category"
ORDER BY wp_posts.post_title;

2) create view costruttore as select post_id, meta_value AS costruttore  from  wp_postmeta where meta_key='costruttore';

dove ‘costruttore’ è un meta key (campo personalizzato) degli articoli presenti sul sito.
Quindi per ogni campo personalizzato che andremo ad usare nella ricerca, bisogna creare la tabella “view” rispettiva.

Poi, quello che segue e un semplice ciclo che elenca i post trovati con la query personalizzata.

<?php if ($pageposts): ?>
<?php global $post; ?>
<?php foreach ($pageposts as $post): ?>
<?php setup_postdata($post); ?>
<a href="<?php echo get_permalink($post->ID); ?>" title="<?php the_title(); ?>">
<?php the_title(); ?>
</a>
<?php endforeach; ?>
<?php endif; ?>

Se ci sono domande non esitate a chiedere!

Grazie!

 

 

 

 

 

 

 

 

Rate this post

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Hai bisogno di aiuto personalizzato con qualcosa che non è documentato qui? Richiedi assistenza
Iscriviti alla nostra newsletter

Iscriviti alla nostra newsletter

Iscriviti alla nostra mailing list per ricevere le ultime notizie e gli aggiornamenti dal nostro team.

You have Successfully Subscribed!