J'utilise le code ci-dessous pour cracher des types de messages personnalisés avec leurs catégories, donc
Catégorie 1 --- poste 1 --- poste 2
Catégorie 2 --- poste 1 --- poste 2 --- poste 3 etc.
Cela fonctionne bien pour moi, mais j'aimerais pouvoir trier mes catégories par nombre afin que orderby = count afin que les catégories avec un plus grand nombre de publications soient placées en haut de la liste pour le moment, cela ne fonctionne pas dans mon code ci-dessous, aucune idée pourquoi?
Merci beaucoup pour l'aide
<?php
// List posts by the terms for a custom taxonomy of any post type
$post_type = 'our_drinks';
$tax = ('our-drinks');
$tax_terms = get_terms( $tax, 'orderby=count&order=ASC&hide_empty=0&hierarchical=true');
if ($tax_terms) {
foreach ($tax_terms as $tax_term) {
$args = array(
'post_type' => $post_type,
"$tax" => $tax_term->slug,
'post_status' => 'publish',
'order' => 'ASC',
'posts_per_page' => -1,
'caller_get_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) : ?>
<div class="category_title">
<?php echo $tax_term->name; ?>
</div>
<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
LOOP CONTENT GOES HERE
<?php endwhile; ?>
v<?php else : ?>
<?php endif; // if have_posts()
wp_reset_query();
} // end foreach #tax_terms
}
?>
Vous avez orderby=count
, ce qui devrait être correct , mais vous avez aussi order=asc
. order=ASC
signifie "du plus petit au plus grand", au moins avec des chiffres. Vous voulez le contraire, "du plus grand au plus petit". Utilisez order=DESC
à la place. Je soupçonne que get_terms
fonctionne, vous venez de lui dire quelque chose de différent que vous voulez réellement.
En outre, vous avez plusieurs requêtes dans une boucle et aucune limite réelle. Cela pourrait entraîner un grand nombre de requêtes de base de données et avoir un impact notable sur les performances du serveur. Être conscient.
Puisque tu ne dis pas que "ça ne marche pas", je vais aborder tous les problèmes auxquels je peux penser maintenant.
register_taxonomy
de fonction query_var => 'our-drinks'
, si vous n'en avez pas déjà un.Si cela ne fonctionne pas ou si vous l'avez déjà, modifiez les arguments dans la requête $my_query
en:
$args = array(
'post_type' => $post_type,
'tax_query' => array(
array(
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $tax_term->slug,
),
),
'post_status' => 'publish',
'order' => 'ASC',
'posts_per_page' => -1,
'caller_get_posts'=> 1
);
puisque votre façon de faire est quelque peu obsolète. Vous trouverez des détails sur tax_query
ici . Remarquez les tableaux imbriqués - ce n'est pas un bug :)