Excluderea categoriilor din interogarea de căutare

22 sept. 2014, 17:56:08
Vizualizări: 14.6K
Voturi: 4

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();
0
Toate răspunsurile la întrebare 1
5

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ă.

22 sept. 2014 17:58:55
Comentarii

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.

Swen Swen
22 sept. 2014 18:13:37

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.

Swen Swen
22 sept. 2014 18:31:39

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

drabello drabello
2 iul. 2017 07:57:09

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

Yuri Yuri
13 nov. 2020 13:34:26

@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

Tom J Nowell Tom J Nowell
13 nov. 2020 15:23:11