WordPress, filtra los mensajes en la página principal

¿Cómo puedo ocultar las publicaciones de alguna categoría con algún ID de la página principal de mi sitio? Necesito solución como filtro:

function exclude_post($query) { if ($query->is_home) { ... } return $query; } add_filter('pre_get_posts', 'exclude_post'); 

¿Alguien puede dar un ejemplo?

Use $query->set( $query_var, $value ); donde $ query_var es la variable que desea agregar / actualizar en la consulta. Así que pon esto dentro de tu condición:

 // 1st parameter is the query variable the 2nd is its value, in this case an array of category IDs $query->set( 'category__not_in', array( 2, 6 ) ); 

Recuerde que es una buena práctica poner en condición un cheque a $query->is_main_query() . pre_get_posts es un gancho de acción, por lo que debe cambiar add_filter para add_action . Un gancho de acción no devuelve un valor, un filtro sí lo hace.

Ejemplo

 function exclude_post( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'category__not_in', array( 2, 6 ) ); } } add_action('pre_get_posts', 'exclude_post'); 

ACTUALIZAR

De acuerdo con los nuevos detalles que surgen de la pregunta, para excluir algunas publicaciones en las transmisiones de noticias, pero no en el archivo de categorías, la verificación condicional podría verse así:

 if( $query->is_feed() && !$query->is_archive() ) 

O

 if( $query->is_feed() && !$query->is_category() ) 

¡Espero eso ayude!

también puede usar la siguiente forma para excluir una categoría de la consulta posterior

  < ?php if ( is_home() ) { query_posts($query_string . '&cat=-3'); } ?> 

Puede usar la exclusión simple en los parámetros de consulta:

 < ?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?> 

Su única muestra, cómo excluir.

Hop it work ..