[Résolu] get_object_taxonomies avec taxinomie hiérarchique et non hiérarchique… (Créer un compte)

  • WordPress :5.0
  • Statut : résolu
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #2242745
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    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?

    #2242750
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Impossible 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 );
    }

    #2242755
    C_Lucien
    Modérateur
    Maître WordPress
    5115 contributions

    Bonjour,

    merci d’être revenu donner la solution.

    Passer le statut en « Résolu » pour guider les recherches vers les solutions.

    #2242756
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    C’est fait 😉

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.