Obtenir l'ID de catégorie dans le modèle de catégorie
8 réponses
- votes
-
- 2011-05-29
$wp_query->get_queried_object()
vous donnera "l'objet actuellementinterrogé".Sur une archive de catégorie,c'est l'objet de la catégorie,sur unepage d'auteur,c'est l'auteur,sur un seulmessage,c'est lemessage lui-même,...ehbien,vous voyez l'idée.Si vousne voulez que l'ID,vouspouvez également utiliser$wp_query->get_queried_object_id()
.$wp_query->get_queried_object()
will give you the "currently queried object". On a category archive this is the category object, on a author page this is the author, on a single post this is the post itself, ... well, you get the the idea. If you only want the ID you can also use$wp_query->get_queried_object_id()
. -
- 2017-02-04
basé surma recherche,vous devez utiliser ceci:
$category = get_queried_object(); echo $category->term_id;
base on my search you must use this:
$category = get_queried_object(); echo $category->term_id;
-
Je suppose que vous avez reçu le vote défavorableparce que vousn'expliquezpaspourquoi cela aide,mais déclarez simplement que c'est le cas.Vous voudrezpeut-êtreinspecter la source de cettefonctionet ajouter vos résultatsen tant quemodification à votre réponse.Astuce: si un commentaire doit êtreplus long que votre réponse,cela aurait dû être un commentaire :)I assume you received the downvote because you are not _explaining_ why it helps, just stating that this does. You might want to inspect the source of that function and add your outcomings as edit to your answer. Hint: If a comment needs to be longer than your answer, then it should have been a comment :)
- 0
- 2017-02-04
- kaiser
-
- 2011-07-01
Euh,je nepeuxpasencore commenter,mais la réponse de VicePrezfonctionne.Ce qui suitfonctionnetrèsbien sur unepage d'archive de catégorie (bien que vous souhaitiezprobablementfaire autre chose que simplementfaire écho):
<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>
MODIFIER: Grattez ça,cela afonctionnépourmoijusqu'à ce queje tombe sur une catégorie quin'avaitpas demessage,puisil a choisi la sous-catégorie au lieu de la catégorieprincipale. Vousne pouvezpas compter surget_the_category sur unepage demodèle de catégorie .
Umm, I can't comment yet, but VicePrez's answer does work. The following works just fine on a category archive page (although you probably want to do something other than just echo it):
<?php $category = get_the_category(); echo $category[0]->cat_ID; ?>
EDIT: Scratch that, it worked for me until I came across a category that didn't have a post, then it picked up the subcategory instead of the main category. You can't rely on get_the_category on a category template page.
-
Cen'estpas une solution viable car cela renvoietoutes les catégoriespourtous les articles de cettepage de catégorie.Votre résultat renvoyé renvoie la catégorieinitiale du derniermessage de la liste.This is not a viable solution as this returns all the categories for all the posts on that category page. Your echoed result returns the initial category of the latest post in the list.
- 0
- 2017-11-21
- cj5
-
- 2011-05-29
Àmoins queje ne comprennemal la question,je pense que vouspouvez également ajouter l'ID de catégorie/slug à la classe de corps:
<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?> <body <?php body_class($cat_ID); ?>>
Unless I am misunderstanding the question, I think you can also add the category id/slug to the body class:
<?php if(is_category()) { $cat_ID = 'cat-'.get_query_var('cat'); } ?> <body <?php body_class($cat_ID); ?>>
-
- 2011-07-12
La réponse de @Jan Fabryesten fait labonne réponse,voicipourquoi:puisque Wordpress autoriseplusieurs catégoriespour un article,en utilisant
$category = get_the_category()
et eninterrogeant$category[0]
ne fonctionnerapas danstous les caspuisque ce que vousfaites réellementest de demander lapremière catégorie dupremiermessage.Imaginez que vous ayez les catégories A,Bet C. Si vousn'avez qu'un seul article,qu'il contient les catégories Aet Bet que vous êtes dans lapage des catégories de B,vous risquez de vous retrouver avec lesinformations de A à laplace.C'estpourquoiilestpréférable d'utiliser
$category = $wp_query->get_queried_object()
,car dans l'exempleprécédent,il vous obtiendratoujours lesinformations de B lorsque vous êtes dans lapage de catégorie de B./p>
@Jan Fabry's response is actually the correct answer, here's why: Since Wordpress allows multiple categories for a post, using
$category = get_the_category()
and querying$category[0]
will not work in every case since what you're actually doing is asking for the first category of the first post. Imagine you have categories A, B and C. If you have only one post, it has categories A and B and you're inside B's category page, you may end up with A's information instead.That's why it's better to use
$category = $wp_query->get_queried_object()
, because in the previous example it will always get you B's information when you're inside B's category page. -
- 2011-05-29
Vouspouvez utiliser
get_the_category()
pour cefaire.Exemple:
<?php $category = get_the_category(); // use this to echo the slug echo $category[0]->slug; // use this to echo the cat id echo $category[0]->cat_ID; // if you've got multiple categories you can run a foreach loop like so foreach ( $category as $cat ) : echo '<li>' . $cat->name . '</li>'; endforeach; ?>
Vouspouvez utiliser:
<?php echo '<pre>'; print_r($category); echo '</pre>'; ?>
pour afficher letableau des objets renvoyés.
You could use
get_the_category()
to do that.Example:
<?php $category = get_the_category(); // use this to echo the slug echo $category[0]->slug; // use this to echo the cat id echo $category[0]->cat_ID; // if you've got multiple categories you can run a foreach loop like so foreach ( $category as $cat ) : echo '<li>' . $cat->name . '</li>'; endforeach; ?>
You could use:
<?php echo '<pre>'; print_r($category); echo '</pre>'; ?>
to view the array of objects that are returned.
-
la question «comment obtenir l'identifiant du chat dans lemodèle»est ouverte à uneinterprétation différente.dans un seulmodèle depublication,vous avez raison.celafonctionne à l'intérieur de labouclepour obtenir les catégories d'un seul article;cependant,`get_the_category ()`ne fonctionnerapas dans unepage d'archive de catégoriepour obtenir l'id de catégorie,le résultat serait arbitraire.the question 'how do I get the cat ID inside the Template' is open to different interpretation. within a single post template, you are right. it works inside the loop to get categories of a single post; however,`get_the_category()` will not work in a category archive page to get the category id, the result would be arbitrary.
- 0
- 2011-05-29
- Michael
-
@Michael vrai dire.@Jan semble avoir donné une réponseplus appropriéepar rapport à ce contexte spécifique.@Michael true say. @Jan seems to have given a more appropriate answer in relation to that specific context.
- 0
- 2011-05-29
- VicePrez
-
`get_the_category ()`fonctionne dans category.php`get_the_category()` does work inside category.php
- 1
- 2011-07-05
- Lea Cohen
-
- 2013-01-11
$category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; $catname=explode(",",get_category_parents($cat_id,'',',')); print_r($catname);
$category = get_category( get_query_var( 'cat' ) ); $cat_id = $category->cat_ID; $catname=explode(",",get_category_parents($cat_id,'',',')); print_r($catname);
-
Veuillezexpliquer **pourquoi ** celapourrait résoudre leproblème.Unextrait de coden'estpas une réponse.Please explain **why** that could solve the problem. A code snippet is not an answer.
- 1
- 2013-01-11
- fuxia
-
- 2013-09-23
" cat "ou"nom_catégorie ".Le seulmoyen quej'aitrouvéest d'extraire les données de:
$wp_query->query['category_name']
Pour une raison quelconque,cela renvoie une valeur différente à
get_query_var( 'category_name' )
quine renvoie que lapremière catégorie.Lorsque vous utilisezplusieurs catégories,vous devrez utiliser unefonctiontelle que
explode
pour obtenir untableau de slugs de catégorie,puisparcourir cette dernièrepour récupérertous lesidentifiants:<?php global $wp_query; //grab all categories from query string (if using `category_name`) $category_slugs_array = explode("+",esc_attr($wp_query->query['category_name'])); $categories = array(); $category_ids = array(); //loop through all the slugs foreach($category_slugs_array as $category_slug) { //get category object using slug $category = get_category_by_slug( $category_slug ); //check to make sure a matching category has been found if(isset($category->cat_ID)) { $categories[] = $category; $category_ids[] = $category->cat_ID; } } var_dump($categories); //array of categories var_dump($category_ids); //array of category IDs ?>
Detoute évidence,certaines considérations doivent êtreprises lors de l'utilisation des opérateurs AND (+) ou OR (,).
Most of the above examples work but if you are using multiple categories NONE (as of writing, WP version 3.6) of the other methods work to get all the categories that have been passed to either "cat" or "category_name".
The only way I have found is to pull the data from:
$wp_query->query['category_name']
For some reason this returns a different value to
get_query_var( 'category_name' )
which only returns the first category.When using multiple categories you will have to use some function like
explode
to get an array of category slugs, then loop through that to grab all the IDs:<?php global $wp_query; //grab all categories from query string (if using `category_name`) $category_slugs_array = explode("+",esc_attr($wp_query->query['category_name'])); $categories = array(); $category_ids = array(); //loop through all the slugs foreach($category_slugs_array as $category_slug) { //get category object using slug $category = get_category_by_slug( $category_slug ); //check to make sure a matching category has been found if(isset($category->cat_ID)) { $categories[] = $category; $category_ids[] = $category->cat_ID; } } var_dump($categories); //array of categories var_dump($category_ids); //array of category IDs ?>
Obviously there needs to be some considerations when using AND (+) or OR (,) operators.
commentpuis-je obtenir l'identifiant du chat dans lemodèle.Trèsimportant: Jene peuxpas lefairepar lenom,carnous avonsplusieurs chats avec lemêmenom.Seule la limaceest différente.Sij'attrapais la limace,çairait aussi. Mais commeje l'ai dit:je nepeuxpas utiliser letitre Cat .....