[Résolu] get_object_taxonomies avec taxinomie hiérarchique et non hiérarchique…

  • 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
    4240 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.