Excluir categorías de la consulta de búsqueda
Tengo dos categorías que quiero excluir de mis resultados de búsqueda, pero hasta ahora sin éxito.
He intentado añadir el siguiente fragmento de código pero no funcionó.
$search_query = query_posts(array('category__in' => array(-22, -21)));
Aquí está mi código actual.
global $query_string;
$query_args = explode("&", $query_string);
$search_query = array();
foreach($query_args as $key => $string) {
$query_split = explode("=", $string);
$search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach
$searchq = new WP_Query($search_query);
while ($searchq->have_posts()) : $searchq->the_post();

Puedes usar la acción pre_get_posts para excluir categorías de la consulta de búsqueda.
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 );
Debes pegar este código en el archivo functions.php de tu tema.

Gracias por tu respuesta. He probado soluciones similares que encontré en internet pero ninguna parece funcionar. Estoy empezando a pensar que quizás sea un problema con mi formulario de búsqueda. Informaré si descubro algo.

Terminé solucionando mis problemas eliminando "$query->" de "$query->is_search". Hice esto porque las categorías no deseadas seguían apareciendo si ingresabas una consulta de búsqueda vacía.

Disculpa mi ignorancia, pero ¿cuál es el objetivo de if ( is_admin() || ! $query->is_main_query() )
?

Perfecto, ¿y cómo funcionaría esto con categorías de tipos de entradas personalizadas? ¡Gracias!

@Yuri no publiques respuestas como nuevas soluciones, y publica nuevas preguntas como nuevas preguntas, no como comentarios https://wordpress.stackexchange.com/questions/ask
