J'utilise la boucle wordpress standard qui ressemble à:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; else: ?>
<h2>We're sorry...there is no content.</h2>
<?php endif; ?>
Ensuite, ce que je voulais faire était d'exclure une certaine catégorie de ma requête. Mon code est donc devenu:
<?php
$parent = get_cat_ID("Sports");
query_posts("cat=-".$parent);
?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; else: ?>
<h2>We're sorry...there is no content.</h2>
<?php endif; ?>
<?php wp_reset_query(); ?>
Ce que je pensais être juste sur l'argent ...
J'ai donc fait des recherches et découvert que cela excluait uniquement la catégorie, pas la catégorie et ses sous-catégories. Existe-t-il un moyen d’exclure de la boucle une catégorie spécifique et toutes ses sous-catégories?
Merci josh
Je vous recommande d'utiliser le filtre pre_get_posts
ou le fossé query_posts
et d'utiliser WP Query
.
De cette façon, vous pouvez facilement utiliser le paramètre category__not_in (array)
et ne déranger aucune autre boucle.
function exclude_category($query) {
// this requires term id instead of term name so change "20" to the "sport" id
// this assumes "sports" is in a category and not a custom taxonomy
$child_cats = (array) get_term_children('20', 'category');
//only effect main home page query
if ( $query->is_home() && $query->is_main_query() ) {
$query->set('category__not_in',array_merge(array('20'), $child_cats));
return $query;
}
}
add_filter('pre_get_posts', 'exclude_category');
ps. Je n'ai pas testé cela, mais en théorie, cela devrait fonctionner.
Cela devrait vous aider:
Récupère les enfants de la catégorie parent
Lisez toutes les sous-catégories du parent, passez en boucle sur le résultat pour en obtenir tous les identifiants, puis incluez tous les identifiants dans l'appel à query_posts ().
Par exemple (non testé):
$parent = get_cat_ID("Sports");
$kids = get_categories( array( 'parent' => $parent ) );
$a = array( $parent );
foreach ( $kids as $kid )
{
$a[] = $kid->ID;
}
query_posts( "cat=-" . implode( ",", $a ) );