Comment afficher une liste de catégories
-
-
Enveloppez le code que vous avez obtenu dans le lien ci-dessus dans unefonctionet ajoutez-le àfunctions.php,puis utilisez cettefonction où vous le souhaitezen utilisant des crochets,un code court ou unfichiermodèle.Wrap code that you got in link above in a function and add it to functions.php, then use that function wherever you want using hooks, shortcode or in template file.
- 0
- 2019-01-04
- Gangesh
-
3 réponses
- votes
-
- 2019-01-04
Je vais vousmontrer comment afficher une liste de catégories dans WordPresset égalementmarquer la catégorie active,voir le code ci-dessous:
& lt;?php //Récupère l'objet actuellementinterrogé $terme=get_queried_object (); $term_id=(isset ($term->term_id))? (entier) $term->term_id: 0; $ categories=get_categories (tableau ( 'taxonomy'=> 'category',//Taxonomiepour laquelle récupérer lestermes. Nous voulons une «catégorie». Notez que ceparamètreest définipar défaut sur 'category',vouspouvez donc l'omettre 'orderby'=> 'nom', 'parent'=> 0, 'hide_empty'=> 0,//passe à 1pourmasquer les catégoriesn'ayantpas un seulmessage )); ? > & lt; ul > & lt;?php foreach ($ categories as $ category) { $ cat_ID=(entier) $ catégorie->term_id; $nom_catégorie=$ catégorie->nom; //Lors de l'affichage d'une catégorieparticulière,donnez-lui une classe [active] $ cat_class=($ cat_ID==$term_id)? 'actif': 'non-actif'; //Jen'aimepasmontrer la catégorie [non catégorisée] if (strtolower ($nom_catégorie)!='non classé') { printf ('% 3 $ s ', esc_attr ($ cat_class), esc_url (get_category_link ($ category->term_id)), esc_html ($ category->nom) ); } } ? > & lt;/ul >
Remarques sur le code ci-dessus:
get_queried_object () récupère l'objet actuellementinterrogé. Parexemple:
- si vous êtes sur un seulpost,il renverra l'objet dupost
- si vous êtes sur unepage,il renverra l'objet depage
- si vous êtes sur unepage d'archive,elle renverra l'objet detype depublication
- si vous êtes sur une archive de catégorie,elle renverra l'objet de catégorie
- si vous êtes sur une archive d'auteur,elle renverra l'objet auteur
- etc.
Maisil y a desimplications lors de l'utilisation de
get_queried_object()
,vousne devriezpas vous attendre à ce qu'il renvoie un objet detypepublicationmême lorsque is_post_type_archive () est vrai. Consultez-lepourplus d'informations.Notez également que
get_queried_object()
est un wrapperpour$wp_query->get_queried_object()
,doncil renvoie untype de données d'objet WP.get_categories ()
get_categories () récupère la liste des objets de catégorie. N'accepte actuellement qu'un seulparamètre -
$args
. Leparamètre $ args spécifie une liste d'arguments à utiliserpour récupérer des catégories. Voir get_terms () pour des options supplémentaires.Cependant,pour obtenir la catégoriepour un articleparticulier,voici unefonction simple quej'ai écrite: Comment obtenir la liste des catégoriespour unmessage
I will show you how to display a list of categories in WordPress and also mark the active category, see code below:
<?php // Get the current queried object $term = get_queried_object(); $term_id = ( isset( $term->term_id ) ) ? (int) $term->term_id : 0; $categories = get_categories( array( 'taxonomy' => 'category', // Taxonomy to retrieve terms for. We want 'category'. Note that this parameter is default to 'category', so you can omit it 'orderby' => 'name', 'parent' => 0, 'hide_empty' => 0, // change to 1 to hide categores not having a single post ) ); ?> <ul> <?php foreach ( $categories as $category ) { $cat_ID = (int) $category->term_id; $category_name = $category->name; // When viewing a particular category, give it an [active] class $cat_class = ( $cat_ID == $term_id ) ? 'active' : 'not-active'; // I don't like showing the [uncategoirzed] category if ( strtolower( $category_name ) != 'uncategorized' ) { printf( '%3$s', esc_attr( $cat_class ), esc_url( get_category_link( $category->term_id ) ), esc_html( $category->name ) ); } } ?> </ul>
Notes about the code above:
get_queried_object() retrieve the currently-queried object. For example:
- if you're on a single post, it will return the post object
- if you're on a page, it will return the page object
- if you're on an archive page, it will return the post type object
- if you're on a category archive, it will return the category object
- if you're on an author archive, it will return the author object
- etc.
But there are some implications when using
get_queried_object()
, you should not expect it to return a post type object even when is_post_type_archive() is true. Check it out for more info.Also, note that
get_queried_object()
is a wrapper for$wp_query->get_queried_object()
, so it returns a WP object data type.get_categories()
get_categories() retrieve list of category objects. Currently accepts only one parameter -
$args
. The $args parameter specifies a list of arguments that should be used to retrieve categories. See get_terms() for additional options.However, to get the category for a particular posts here's a simple function I wrote: How to get list of categories for a post
-
- 2014-02-08
Selon lefil de discussion WPSE liéet la réponse acceptée ,le codeest (copiéet collé) :
$categories = get_categories('child_of=31'); foreach ($categories as $category) { //Display the sub category information using $category values like $category->cat_name echo '<h2>'.$category->name.'</h2>'; echo '<ul>'; foreach (get_posts('cat='.$category->term_id) as $post) { setup_postdata( $post ); echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>'; } echo '</ul>'; }
Quant ànous (les développeurs WordPress), Codex est la clé de laplupart desbases. Donc selon WordPress Codex:
-
get_categories()
interrogetoutes les catégories de un siteet renvoie untableau. - Demême,
get_posts()
interrogetous lesmessages d'un siteet renvoie untableau.
Etils sonttous les deux le raccourci de
WP_Query()
. Vouspouvez obtenirtous leursparamètrespossibles àpartir despages Codex. Comme vous êtes unpassionné de PHP,vous savez comment le codefonctionne:$categories
prendtoutes les catégorieset pour chaque catégorieget_posts()
prend sesmessages.C'est donctrès similaire à une requêtemySQLet uneboucleforeachen PHPbrut. Vouspouvezinsérer ce code dans l'une despages template de votrethème actif WP. La hiérarchie desmodèles peut vous donner un aperçu détaillé.
Selon votretitre de la questionest:
Comment afficher une liste de catégories
La réponsepeut être:
$categories = get_categories(); echo '<ul>'; foreach ($categories as $category) { echo '<li>'. $category->cat_name .'</li>'; } echo '</ul>';
je ne saispastrop oùplacer le codeni comment y accéder sur lapage.
Je l'ai déjà dit,essayez demettre le code dans
index.php
,front-page.php
,...n'importe où. Le concept cléest le suivant: c'estjuste une requête SQLet uneboucleforeach
utile de PHP.As per the linked WPSE thread, and the accepted answer, the code is (copied & pasted):
$categories = get_categories('child_of=31'); foreach ($categories as $category) { //Display the sub category information using $category values like $category->cat_name echo '<h2>'.$category->name.'</h2>'; echo '<ul>'; foreach (get_posts('cat='.$category->term_id) as $post) { setup_postdata( $post ); echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>'; } echo '</ul>'; }
As for us (the WordPress developers) Codex is the key for most of the basics. So according to WordPress Codex:
get_categories()
does query for all the categories of a site, and returns an array.- Similarly
get_posts()
does query for all the posts of a site, and returns an array.
And they both are the shortcut of
WP_Query()
. You can get all their possible parameters from the Codex pages. As you are a PHP enthusiast, you know how the code is functioning:$categories
is taking all the categories and for every categoryget_posts()
is taking its posts.So it's very similar to a mySQL query and a foreach loop in raw PHP. You can put this code into any of your WP site's active theme's template pages. Template Hierarchy can give you a detail insight.
As per your title of the Question is:
How to display a list of categories
The answer can be:
$categories = get_categories(); echo '<ul>'; foreach ($categories as $category) { echo '<li>'. $category->cat_name .'</li>'; } echo '</ul>';
am not quite sure where to put the code or how to access it on the page.
I've already said, try putting the code into
index.php
,front-page.php
, ... anywhere. The key concept is: it's just a SQL Query and a usefulforeach
loop of PHP. -
- 2014-02-08
Cetteméthode vouspermet d'excluren'importe quelle catégorie simplementen ajoutant le cati.d au code.
Voici unmeilleurmoyen d'ajouter une liste de catégories demanière conditionnelle àpartir de votrefichier defonctions dethèmesenfants dansn'importe quelemplacement de crochet spécifique à WordPress ou à unthème:
add_filter( 'the_content', 'wpsites_list_cats' ); function wpsites_list_cats($content) { if( is_singular('post') && is_main_query() ) { $args = array( 'orderby' => 'name', 'exclude' => '', 'include' => '', 'parent' => 0 ); $categories = get_categories( $args ); echo'<nav id="primary-navigation" class="primary-navigation" role="navigation">'; foreach ( $categories as $category ) { echo '<li><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>'; } echo'</nav>'; return $content; } }
Voici le résultat
Et voici le résultat si vous souhaitez utiliser le styleexistant desmenus denavigation Twenty Fourteens que le code ci-dessusinclut.
Le code vouspermet également d'inclure des catégories spécifiques ou d'enexclureen utilisant lesidentifiants cat.
Vouspouvez également créer une zone de widgetpersonnalisée et utiliser le widget de catégorie WordPressnatif.
Modifiez simplement le the_content pour changer l'emplacement de la liste des catégories.
/p>
Modifié àpartir de cette source
This method enables you to exclude any category simply by adding the cat i.d to the code.
Here's a better way to add a list of categories conditionally from your child themes functions file in any WordPress or theme specific hook location:
add_filter( 'the_content', 'wpsites_list_cats' ); function wpsites_list_cats($content) { if( is_singular('post') && is_main_query() ) { $args = array( 'orderby' => 'name', 'exclude' => '', 'include' => '', 'parent' => 0 ); $categories = get_categories( $args ); echo'<nav id="primary-navigation" class="primary-navigation" role="navigation">'; foreach ( $categories as $category ) { echo '<li><a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>'; } echo'</nav>'; return $content; } }
Here's the result
And here's the result if you want to use the existing styling from the Twenty Fourteens navigation menus which the above code includes.
The code also enables you to include specific categories or exclude any using the cat i.d's
You could also create a custom widget area and use the native WordPress category widget.
Simply change the the_content hook to change the location of the categories list.
Modified from this source
J'essaie de créer une liste de catégories avec des liens cliquables vers cette catégorie. J'ai regardé:
et jene saispastrop oùplacer le codeni comment y accéder sur lapage.