Very short trick: Wordpress, escludere pagine e post dalla ricerca

mercoledì 8 luglio, 2009

Il motore interno di Wordpress sfruttato per la ricerca (quella standard senza l'aggiunta di plugin) effettua a basso livello una classica query_post(). La ricerca viene svolta dapperttutto, senza escludere nulla. Questa caratteristica può essere tuttavia controllata permettendo, ad esempio, di effettuare una ricerca su tutto tranne che in particolari categorie, pagine o post. Esistono vari modi per "filtrare" la ricerca standard di Wordpress, uno è sfruutando il filtro pre_get_posts:

PHP:
  1. /**
  2.  * Inserire questo codice nel file functions.php
  3. *  Esclude dalla ricerca le pagine/post con id 26,27 e 32
  4.  */
  5. function search_filter($query) {
  6.     if ($query->is_search) {
  7.         $query->set('post__not_in', array(26,27,32));
  8.     }
  9.     return $query;
  10. }
  11.  
  12. add_filter('pre_get_posts','search_filter');

Questo filtro è interessante e permette di eseguire varie attività sulla nostra query di ricerca. Analizzando il parametro di ingresso $query si può avere un'idea delle operazioni che si possono svolgere:

PHP:
  1. function search_filter($query) {
  2.     if ($query->is_search) {
  3.        echo '<pre>';
  4.        print_r($query);
  5.        echo '</pre>';
  6.     }
  7.     return $query;
  8. }
  9.  
  10. add_filter('pre_get_posts','search_filter');

Ad esempio è possibile escludere dalla ricerca particolari categorie:

PHP:
  1. /**
  2.  * Inserire questo codice nel file functions.php
  3.  * Esclude la categoria con id 14
  4.  */
  5. function search_filter($query) {
  6.     if ($query->is_search) {
  7.         $query->set('cat', '-14');
  8.     }
  9.     return $query;
  10. }
  11.  
  12. add_filter('pre_get_posts','search_filter');

La prima if nel codice determina in che modalità siamo, in questo caso search. Questo significa che possiamo applicare questo filtro anche in altri contesti, come ad esempio:

PHP:
  1. /**
  2.  * Inserire questo codice nel file functions.php
  3.  * Esclude la categoria con id 14 dai Feed
  4.  */
  5. function search_filter($query) {
  6.     if ($query->is_feed) {
  7.         $query->set('cat', '-14');
  8.     }
  9.     return $query;
  10. }
  11.  
  12. add_filter('pre_get_posts','search_filter');

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Un commento a: “Very short trick: Wordpress, escludere pagine e post dalla ricerca”

  1. 08 lug, 2009 Undolog.com» Very short trick: Wordpress, escludere pagine e post …:

    [...] approfondire consulta articolo originale: Undolog.com» Very short trick: Wordpress, escludere pagine e post … Articoli correlati: Very short trick: pagine padri e pagine figlie in Wordpress [...]

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
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL