<?php
$current_term = $wp_query->queried_object->name;
$current_term_id = $wp_query->queried_object->ID;
?>
<hgroup class="section-heading wrapper">
<h1><?php echo $current_term; ?></h1>
<h3><?php echo category_description( $current_term_id ); ?></h3>
</hgroup>
Cela fonctionne bien, mais la variable $current_term_id
émet un avertissement…
Notice: Undefined property: stdClass::$ID in /Users/my/htdocs/wr/wp-content/themes/wr/taxonomy-event_type.php on line 12
Des idées que je fais mal ici ou quelle est la propriété réelle de l'ID du terme actuel?
J'ai fait face au même problème pendant des jours et j'ai trouvé ça! Utilisez la fonction $wp_query->get_queried_object_id()
. Vérifiez this pour plus de détails.
Il y a aussi un wrapper pour cette fonction get_queried_object_id()
. Il appelle toutes les parties comme global $wp_query
par lui-même.
Utilisez toujours l'API la plus basse, jusqu'à ce que vous soyez obligé de faire autrement.
La définition de l’API par l’article (en cours) de wikipedia est la suivante:
Une interface de programmation d'application (API) est une spécification destinée à être utilisée comme interface par les composants logiciels pour communiquer entre eux.
Cela signifie qu'il a été écrit pour communiquer avec core internals et votre theme ou plugin .
Pour une raison simple: une API d'habillage permet aux cœurs internals de se transformer, tout en restant compatibles avec tout ce que vous utilisez comme arguments. Une fonction wrapper peut ajouter une compatibilité ascendante là où une classe/objet principale ne peut pas.
Cela raccourcit également votre code, le rend plus lisible et vous permet de vous concentrer sur ce qui doit être fait par votre code.
Lorsque vous êtes sur une archive de taxonomie (is_tax()
est true
) queried_object
est rempli de cette façon (exemple de mon site):
public 'queried_object' =>
object(stdClass)[163]
public 'term_id' => int 2
public 'name' => string 'Puglia' (length=6)
public 'slug' => string 'puglia' (length=6)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 7
public 'taxonomy' => string 'region' (length=6)
public 'description' => string 'Bari, Brindisi, Lecce, Taranto, Foggia' (length=38)
public 'parent' => int 0
public 'count' => int 1
public 'filter' => string 'raw' (length=3)
public 'queried_object_id' => int 2
Donc, vous obtenez directement le nom et la description. Le code que vous pouvez utiliser est:
<?php
$current_term_name = $wp_query->queried_object->name;
$current_term_description = $wp_query->queried_object->description;
?>
<hgroup class="section-heading wrapper">
<h1><?php echo $current_term_name; ?></h1>
<h3><?php echo $current_term_description; ?></h3>
</hgroup>
$wp_query->queried_object->ID
a plusieurs points de défaillance potentiels:
WP_Post
. Le queried_object
peut également faire référence à une taxonomie dans certaines circonstances .queried_object
peut être null et vous demandez donc une propriété sur un objet inexistant.Vous pourriez utiliser $wp_query
dans le code sans référence à cette variable globale. Si vous déterminez que $wp_query
lui-même est nul, vous devez ajouter
global $wp_query;
... quelque part au-dessus de votre code.