Escludere un custom post type dalla ricerca in base al valore di un custom field?

13 feb 2013, 21:18:22
Visualizzazioni: 2.03K
Voti: 0

Non sono riuscito a trovare nulla su come fare questo, o se sia addirittura possibile.

Quello che voglio fare è non mostrare nei risultati di ricerca i post del tipo personalizzato "resources" in cui "resource_usertype" (chiave) non è "Public" o "Students" o "Alumni" (valori).

O forse un modo migliore per dirlo è mostrare solo i risultati di ricerca in cui i valori di "resource_usertype" sono "Public", "Students" o "Alumni".

0
Tutte le risposte alla domanda 2
1

Devi implementare un hook per il filtro pre_get_posts, in cui puoi impostare ciò di cui hai bisogno. Fai attenzione che dovresti modificare solo la query di ricerca, quindi devi verificare se il metodo is_search() restituisce true. L'hook dovrebbe essere così:

add_filter( 'pre_get_posts', 'wpse8170_pre_get_posts' );
function wpse8170_pre_get_posts( WP_Query $query ) {
    if ( $query->is_search() ) {
        $query->set( 'post_type', array( 'resources' ) );
        $query->set( 'meta_query', array(
            array(
                'key' => 'resource_usertype',
                'value' => array('Public', 'Students', 'Alumni'),
                'compare' => 'IN',
            )
        ) );
    }

    return $query;
}
13 feb 2013 22:02:13
Commenti

Eugene - sembra che potrebbe funzionare, ma in realtà esclude tutti i risultati su tutti i tipi di post e pagine.

Ray Gulick Ray Gulick
13 feb 2013 22:25:45
1

È perfettamente possibile!

$args = array(
   'post_type' => 'resources',
   'meta_query' => array(
       array(
           'key' => 'resource_usertype',
           'value' => array('Pubblico', 'Studenti', 'Alumni'), // Traduzione dei valori dell'array
           'compare' => 'IN',
       )
   )
 );
 $query = new WP_Query($args);
13 feb 2013 21:57:20
Commenti

Questa è una query per gli annunci, vero? In particolare, sto cercando di escludere dai risultati della ricerca.

Ray Gulick Ray Gulick
13 feb 2013 22:22:11