Modifier la boucle WP sans toucher aux fichiers template

La boucle utili­sée par Word­Press pour affi­cher la liste des billets (query) est très souple d’emploi. Il se trouve que l’on peut la modi­fier sur des endroits parti­cu­liers du site en passant par le fichier functions.php.
Dans l’exemple suivant, on exclut les billets de la caté­go­rie 4 pour la boucle de la page d’ac­cueil (is_home).

Code

add_action( 'pre_get_posts', 'be_exclude_category_from_blog' );
/**
 * Exclude Category from Blog
 * 
 * @author Bill Erickson
 * @link http://www.billerickson.net/customize-the-wordpress-query/
 * @param object $query data
 *
 */
function be_exclude_category_from_blog( $query ) {
 
  if( $query->is_main_query() && $query->is_home() ) {
    $query->set( 'cat', '-4' );
  }
 
}