Cum să exclud un tip de postare personalizată din căutare pe baza valorii unui câmp personalizat?

13 feb. 2013, 21:18:22
Vizualizări: 2.03K
Voturi: 0

Nu am reușit să găsesc informații despre cum să fac asta sau dacă este posibil.

Ceea ce vreau să fac este să nu afișez în rezultatele căutării postările de tipul "resources" unde valoarea câmpului "resource_usertype" (cheie) nu este "Public", "Students" sau "Alumni".

Sau, poate mai bine spus, vreau să afișez doar rezultatele căutării unde valorile câmpului "resource_usertype" sunt "Public", "Students" sau "Alumni".

0
Toate răspunsurile la întrebare 2
1

Trebuie să implementați un hook pentru filtrul pre_get_posts, în care puteți seta ceea ce aveți nevoie. Atenție, ar trebui să modificați doar interogarea de căutare, așa că trebuie să verificați dacă metoda is_search() returnează true. Hook-ul ar trebui să arate astfel:

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', 'Studenți', 'Absolvenți'),
                'compare' => 'IN',
            )
        ) );
    }

    return $query;
}
13 feb. 2013 22:02:13
Comentarii

Eugene - arată ca și cum ar funcționa, dar de fapt exclude toate rezultatele pentru toate tipurile de postări și pagini.

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

Este perfect posibil!

$args = array(
   'post_type' => 'resources',
   'meta_query' => array(
       array(
           'key' => 'resource_usertype',
           'value' => array('Public', 'Studenți', 'Absolvenți'),
           'compare' => 'IN',
       )
   )
 );
 $query = new WP_Query($args);
13 feb. 2013 21:57:20
Comentarii

Aceasta este o interogare pentru listări, nu-i așa? Mai exact, încerc să exclud din rezultatele de căutare.

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