Excluderea categoriilor din interogarea de căutare
Am două categorii pe care doresc să le exclud din rezultatele căutării, dar până acum fără succes.
Am încercat să adaug următorul fragment de cod, dar nu a funcționat.
$search_query = query_posts(array('category__in' => array(-22, -21)));
Iată codul meu actual.
global $query_string;
// Descompunem șirul de interogare în argumente separate
$query_args = explode("&", $query_string);
$search_query = array();
// Prelucrăm fiecare argument
foreach($query_args as $key => $string) {
$query_split = explode("=", $string);
$search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach
// Creăm o nouă interogare WP
$searchq = new WP_Query($search_query);
// Afișăm postările
while ($searchq->have_posts()) : $searchq->the_post();
Puteți utiliza acțiunea pre_get_posts pentru a exclude categorii din interogarea de căutare.
function wcs_exclude_category_search( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_search ) {
$query->set( 'cat', '-22, -21' );
}
}
add_action( 'pre_get_posts', 'wcs_exclude_category_search', 1 );
Ar trebui să lipiți acest cod în fișierul functions.php al temei dumneavoastră.

Mulțumesc pentru răspuns. Am încercat soluții similare pe care le-am găsit pe internet, dar niciuna nu pare să funcționeze. Încep să cred că poate e o problemă cu formularul meu de căutare. Voi reveni cu informații dacă aflu ceva.

Am reușit să rezolv problemele eliminând "$query->" din "$query->is_search". Am făcut asta pentru că categoriile nedorite tot apăreau dacă introduceai un query de căutare gol.

Scuzați ignoranța mea, dar care este scopul if ( is_admin() || ! $query->is_main_query() )
?

Bine, grozav, și cum ar funcționa asta cu categoriile din tipurile personalizate de postări? Mulțumesc!

@Yuri nu posta răspunsuri ca soluții noi, și postează întrebări noi ca întrebări separate, nu ca comentarii https://wordpress.stackexchange.com/questions/ask
