Very short trick: WordPress, evidenziare i risultati di una ricerca

Esistono numerosi Plugin per WordPress che permettono di migliorare le caratteristiche e le prestazioni della funzione “cerca”. Quasi tutti i Plugin disponibili hanno l’utile e gradevole caratteristica di evidenziare le parole cercate nel risultato delle ricerca. Se non avete intenzione di appensantire ulteriormente la vostra installazione WordPress ma non volete rinunciare del tutto ad una funzionalità simile, ecco come implementare facilmente un “evidenzia” dei termii di ricerca nei risultati.

Aprite il file search.php e inserire il seguente codice all’interno del loop centrale o, se utilizzate un tema standard, cercate il div class="entry". In pratica andiamo a modificare l’emissione del risultato dopo una ricerca:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="entry">
<?php
    // Nella variabile $s c'è la stringa di ricerca
    // ad esempio: parolaA parolaB
    $keys    = explode(" ",$s);
    // Prelevo il riassunto, non il testo intero
    $excerpt = get_the_excerpt();
    // avvolgo nel riassunto le parole cercate
    // con <strong class="evidenzia">parolaA</strong>
    $excerpt = preg_replace('/(' . implode('|', $keys) . ')/iu', '<strong class="evidenzia">\0</strong>', $excerpt);
    // Mostro il riassunto alterato
    echo apply_filters("the_excerpt", $excerpt) ;
?>
<p class="right more"><a href="<?php the_permalink() ?>">Leggi tutto</a></p>
</div>

Tutte le parole inserite nel campo di ricerca saranno evidenziate (la classe CSS evidenzia potete definirla a piacere, ad esempio con un background giallino simile ad un evidenziatore… o quello che volete) nel risultato se presenti nel riassunto. Questa procedura, infatti, ha il limite di agire solo sulla prima parte del nostro post (excerpt) e non su tutto il suo contenuto. Tuttavia è una buona alternativa all’installazione di un ulteriore plugin.

11 commenti a: “Very short trick: WordPress, evidenziare i risultati di una ricerca”

  1. 09 lug, 2009 Undolog.com» Very short trick: Wordpress, evidenziare i risultati …:

    [...] approfondire consulta la fonte:  Undolog.com» Very short trick: WordPress, evidenziare i risultati … Articoli correlati: Undolog.com» Very short trick: WordPress, escludere pagine e post [...]

  2. 12 lug, 2009 Il meglio della settimana #25 | BigThink:

    [...] Very short trick: WordPress, evidenziare i risultati di una ricerca Un piccolo trucco per rendere più visibili le parole chiave cercate sul nostro blog, nei risultati di ricerca. [...]

  3. 15 lug, 2009 YesWEBcan:

    Davvero molto interessante, grazie.
    Guardando il tuo blog vedo che è veramente ben fatto, ti inserisco tra i siti da visitare del mio
    Ciao e complimenti

  4. 19 lug, 2009 #4 Il meglio del Web - Luca Mercatanti:

    [...] @Blogging@ Very short trick: WordPress, evidenziare i risultati di una ricerca [...]

  5. 06 ott, 2009 jicke:

    @YesWEBcan:

    Davvero molto interessante, grazie.
    Guardando il tuo blog vedo che è veramente ben fatto, ti inserisco tra i siti da visitare del mio
    Ciao e complimenti

    thank to cool post

  6. 06 set, 2010 Sp0nky:

    Bohh..in search.php non trovo data entry..mi puoi indicare dove inserisco questo codice?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php get_header(); ?>

      <div id="content">
        <div class="post">
          <div class="title">
      <h2>Rezultatele cautarii</h2>
      </div>
      <?php if (have_posts()) : ?>
           
      <?php while (have_posts()) : the_post(); ?>
      <div class="post-content" id="post-<?php the_ID(); ?>">
     
          <h3><a href="<?php the_permalink() ? rel="nofollow">" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h3>
          <?php the_excerpt(); ?>
      </div>
      <?php endwhile; ?>
     
      <div class="navigation">
        <span class="previous-entries"><?php next_posts_link('Previous Entries') ?></span> <span class="next-entries"><?php previous_posts_link('Next Entries') ?></span>
      </div>
     
      <?php else : ?>
        <h3>Ne pare rau nu am gasit nimic.Va rugam incercati din nou.</h3>
        <?php endif; ?>
      </div><!--/content -->
             
      </div><!--/content -->
     
    <?php get_sidebar(); ?>

    <?php get_footer(); ?>
  7. 06 set, 2010 Giovambattista Fazioli:

    @Sp0nky: non ho capito la domanda…

  8. 06 set, 2010 Sp0nky:

    Caro mio Giovambattista, in tuo articolo scrive apri il search.php e puoi inserirsci il seguente codice all’interno …..
    Come vedi in mio search.php, non ho div class="entry", per non sbagliare ho chiesto dove inserisco il codice postato di te?

  9. 06 set, 2010 Giovambattista Fazioli:

    @Sp0nky: Ok, in pratica lo devi inserire alla riga 14 posto di:

    1
    <?php the_excerpt(); ?>

    Questo perchè – come scritto nel post – tu non stai utilizzando il tema standard. Ogni tema, infatti, può all’occasione alterare parte dell’HTML standard di WordPress, anche se molti temi mantengono la nomenclatura entry.

  10. 06 set, 2010 Sp0nky:

    grazie mille amico.Hai tante cose interesante qui in sito.Li devo cercare e mettere in practica.A presto.

  11. 10 feb, 2011 Don Kazim:

    ciao e grazie per questo bel articolo!!^^
    ho un problema:
    vorrei che nei risultati di ricerca ci sia sia the_excerpt(); e sia the_content();.
    in questo modo:
    the_content();
    the_excerpt();

    Grazie mille^^

    PS: c’è qualche codice per migliorare la ricerca??

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
					<code></code> // blocco generico
					[cc_actionscript][/cc_actionscript] // Actionscript
					[cc_actionscript3][/cc_actionscript3] // Actionscript 3
					[cc_css][/cc_css] // CSS Style Sheet
					[cc_html][/cc_html] // HTML
					[cc_js][/cc_js] // Javascript
					[cc_objc][/cc_objc] // Objective-C
					[cc_php][/cc_objc] // PHP
					[cc_sql][/cc_sql] // SQL


Stop SOPA