- WordPress :5.0
- Statut : résolu
- Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par Mooks, le il y a 5 années et 7 mois.
-
AuteurMessages
-
21 janvier 2019 à 13 h 22 min #2242745
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : 7.2
- Thème utilisé : Custom
- Extensions en place : sans importance pour ce cas de figure
- Nom de l’hébergeur : Infomaniak
Problème(s) rencontré(s) :
Bonjour,
Je souhaite ajouter à mes fiches produits diverses informations provenant de taxinomies personnalisées. Cette fonction me permet de récupérer un objet taxinomies avec toutes les informations dont j’ai besoin :
function get_tax_terms_for_the_product() {
// Get post by post ID.
if ( ! $post = get_post() ) {
return '';
}
// Get post type by post.
$post_type = $post->post_type;
// Get post type taxonomies.
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
$out = array();
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// Get the terms related to post.
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
if( $term->parent == 0 ) {
continue;
}
$out[] = sprintf( '<li>%1$s</li>',
esc_html( $term->name )
);
}
}
}
return implode( '', $out );
}Le problème que j’ai est le suivant : en l’état, cette fonction me permet d’afficher les enfants des termes parents de chaque taxinomies. Le souci, c’est que je dispose de plusieurs taxinomies NON HIERARCHIQUE…
Pour résumer, je galère actuellement à rajouter un filtre disant à la fonction : affiche les termes parents si la taxinomie est non hiérarchique, mais si elle est hiérarchique, affiche les enfants.
Il y a une fonction prévu à cette effet dans WordPress : https://codex.wordpress.org/Function_Reference/is_taxonomy_hierarchical mais je n’arrive pas à l’inclure sans erreur (Illegal offset type in isset or empty, indiqué par WP Query Monitor lorsque j’ajoute les conditions).
Une idée pour m’aider?
21 janvier 2019 à 14 h 32 min #2242750Impossible d’éditer le message, mais le problème est finalement résolu :
function get_tax_terms_for_the_product() {
// Get post by post ID.
if ( ! $post = get_post() ) {
return '';
}
// Get post type by post.
$post_type = $post->post_type;
// Get post type taxonomies.
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
$out = array();
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// Get the terms related to post.
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if( is_taxonomy_hierarchical( $taxonomy_slug )) {
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
if( $term->parent == 0 ) {
continue;
}
$out[] = sprintf( '<li>%1$s</li>',
esc_html( $term->name )
);
}
}
}
if( ! is_taxonomy_hierarchical( $taxonomy_slug )) {
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
$out[] = sprintf( '<li>%1$s</li>',
esc_html( $term->name )
);
}
}
}
} return implode( '', $out );
}21 janvier 2019 à 15 h 01 min #2242755Bonjour,
merci d’être revenu donner la solution.
Passer le statut en « Résolu » pour guider les recherches vers les solutions.
21 janvier 2019 à 15 h 05 min #2242756C’est fait 😉
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.