web-dev-qa-db-fra.com

Comment afficher les messages dans une sous-catégorie spécifique d'une catégorie donnée

après une longue recherche en ligne, j'ai décidé de poster mon problème ici dans l'espoir de trouver une solution à ce problème. Eh bien, j'ai un article personnalisé avec différentes catégories (romans, livres, magazines, etc.) et chacune de ces catégories comporte de nombreuses sous-catégories (2002, 2004, 2005, 2006, etc.) l'année de publication. Fondamentalement, ce dont j'ai besoin est d’afficher un menu de filtrage basé uniquement sur les sous-catégories pertinentes de la catégorie sélectionnée. Et lorsque l'utilisateur clique sur un élément de menu de sous-catégorie, il sera en mesure d'obtenir tous les articles de cette catégorie.

c’est ce que j’ai fait jusqu’à présent, mais j’ignore comment filtrer par sous-catégorie dans une catégorie donnée.

        if (isset($_GET['cat'])){
    $subcat = $_GET['cat'];
    query_posts( 'posts_per_page=10&paged='.$paged.'&post_type=publication&publication_category='.$maincat.**'&category__in='**.$subcat );
        }else{
    query_posts( 'posts_per_page=10&paged='.$paged.'&post_type=publication&publication_category='.$maincat );   
    }

Je suis si reconnaissant à quiconque pourrait me donner un peu de son temps pour résoudre ce problème.

1
Musta

Cela devrait suffire à faire ceci:

query_posts( 'posts_per_page=10&paged='.$paged.'&post_type=publication&publication_category='.$subcat );

Si vous regardez votre code d'origine, vous pouvez comprendre pourquoi vous vous êtes trompé en regardant ce que vous demandez littéralement dans vos arguments:

Je voudrais les messages qui sont dans la catégorie principale mais qui sont dans la catégorie des enfants.

Quand tu veux c'est:

Je voudrais les messages qui sont dans la catégorie des enfants

Assurez-vous également d'utiliser des identifiants de terme et non des noms de terme, car ils sont plus fiables.

Également une note finale d'importance cruciale

Vous vérifiez contre cat , mais il s'agit d'un nom WordPress réservé, qui ne sera jamais valable. un identifiant de catégorie, pas un identifiant de catégorie publication_category. Si vous transmettez quoi que ce soit en utilisant cette variable GET, Wordpress modifiera la requête en conséquence en supposant qu'il s'agisse d'une catégorie. C'est une mauvaise nouvelle.

Vous pouvez donc renommer la variable utilisée ou utiliser les archives de taxonomie auxquelles votre code fait allusion. par exemple. example.com/publication_category/maincategory/subcategory/ et demandez à WordPress de faire tout cela à votre place.

2
Tom J Nowell