J'essaie d'exclure les messages d'une certaine catégorie de ceux affichés sur mon home.php.
Le code qui est dans mon thème est le suivant:
query_posts(array('post__not_in' => $featured_posts_array));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div class="categories">
<h3><?php the_categories_excerpt(); ?></h3>
J'ai essayé d'ajouter ce qui suit avant le query_posts (fonction mais cela ne fait rien.
function exclude_category( $query ) {
if ( is_feed() ) {
$query = set_query_var( 'cat', '-1' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category' );
Y a-t-il un type de format que je dois suivre?
Premièrement, n'utilisez pas query_posts()
. Juste se débarrasser de l'appel entièrement. Ça va casser des choses.
Seconde:
J'ai essayé d'ajouter ce qui suit avant le query_posts (fonction mais cela ne fait rien.
Les rappels et les appels add_action()
appartiennent à functions.php
, et non dans le fichier de modèle. Si vous l'avez mis directement dans home.php
, retirez-le de là et mettez-le dans functions.php
.
Troisième:
Votre filtre pre_get_posts()
utilise la condition if ( is_feed() )
. La condition is_feed()
renvoie true lorsqu'un flux RSS est généré, et non sur l'index des articles de blog (qui est ce qui est généré via home.php
). Essayez d’utiliser plutôt is_home()
.
Quatrième:
N'appelez pas set_query_var()
dans votre rappel. Utilisez $query->set()
à la place.
Utilisez ce qui suit dans functions.php
<?php
function wpse55358_filter_pre_get_posts( $query ) {
// Let's only modify the main query
if ( ! is_main_query() ) {
return $query;
}
// Modify the blog posts index query
if ( is_home() ) {
// Exclude Category ID 1
$query->set( 'cat', '-1' );
// Build featured posts array
$featured_posts_array = featured_posts_slider();
// Exclude featured posts
$query->set( 'post__not_in', $featured_posts_array );
}
// Return the query object
return $query;
}
add_filter( 'pre_get_posts', 'wpse55358_filter_pre_get_posts' );
?>
Quelle catégorie essayez-vous d'exclure? Êtes-vous sûr que l'ID est 1
?