Récupérer les enfants et parents d'un taxonomie perso

Par Antoineb, il y a 13 ans


Je rencontre un souci avec la gestion d'un filtre pour un site.

J'ai créé une extension avec des taxonomies dans le fichier functions.php.

J'aimerai récupérer le parent dans ma balise <h4> et les enfants dans un <ul><li>

Mais je ne sais pas comment faire.

Mon fichier functions.php :

// Post type TUTORIEL
add_action('init', 'tutoriel_init');
function tutoriel_init() 
{
  $labels = array(
    'name' => 'Tutos',
    'singular_name' => 'Tutoriel',
    'add_new' => 'Ajouter un tutoriel',
    'add_new_item' => 'Ajouter un nouveau tutoriel',
    'edit_item' => 'Modifier un nouveau tutoriel',
    'new_item' => 'Nouveau tutoriel',
    'view_item' => 'Voir le tutoriel',
    'search_items' => 'Rechercher un tutoriel',
    'not_found' => 'Aucun tutoriel trouvé',
    'not_found_in_trash' => 'Aucun tutoriel dans la poubelle', 
    'parent_item_colon' => '',
    'menu_name' => 'Tutoriels'
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post', 
    'hierarchical' => false,
    'menu_position' => 3,
    'supports' => array('title', 'editor', 'thumbnail', 'custom-fields')
  ); 
  register_post_type('tutoriel',$args);
}
add_action( 'init', 'create_taxonomy', 0 );
function create_taxonomy() 
{
  $labels = array(
    'name' => 'Domaines',
    'singular_name' => 'Domaine',
    'search_items' => 'Rechercher un domaine',
    'all_items' => 'Tous les domaines',
    'edit_item' => 'Editer un domaine', 
    'update_item' => 'Modifier un domaine',
    'add_new_item' => 'Ajouter un domaine',
    'new_item_name' => 'Nouveau domaine',
    'menu_name' => 'Domaines'
  );     
  register_taxonomy('domaines',array('tutoriel'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'domaines' )
  ));
}

Mon fichier HTML :

<div class="cat-filter">
<h4>#Parent</h4>
<ul>
<li><a href="#"></a> #enfants <span>(5)</span></li> |
</ul>
</div>

Merci d'avance de vos réponses.

Cordialement AntoineB.

5 réponses

Antoineb, il y a 13 ans

Quand j'utilise le mot enfant et parent, c'est les catégories et les sous catégories de ma taxonomie WordPress !

Mais merci quand même ;)

BenFarhat, il y a 13 ans

je ne vois pas trop pourquoi tu as besoin de la balise parent dans ton cas:
peut être qu'en expliquant un peu plus il y aurait une autre démarche plus logique pour arriver a ton besoin finale

cela dit, tu ne dit pas dans quel contexte tu veut récupéré le parent ou l'enfant

SI c'est dans CSS:
Bien que certaines proposition ont été emises (des astuces) la sélection du parent est en principe prévu pour la version 4 de CSS, pour l'enfant il suffit d"utiliser le signe ">" ou alors carrément les pseudo classes du type first-child last-child
SI c'est dans jQuery:
tu as les fonctions parent() et children() qui font l'affaire
Mais bon je ne voit pas trop a quoi ca te servirait vu que dans ta loop wordpress c'est toi qui contrôle ou tu va mettre tes éléments ou blocs
Bref j'espère que ca t'aidera :) bonne continuation

BenFarhat, il y a 13 ans

ah :) j'ai l'air bête...
tu n'as pas dit parent et enfant de quoi! :)
sur wordpress tu as la fonction get_children()
mais bon je sais pas trop a quoi tu l'utiliseras... je dis ca parce que si jamais tu penser par exemple a étendre ton menu via l'utilisation d'objet tu as la propriété has_children
par exemple:

class tontheme_walker extends Walker_Nav_Menu
{
    var $link_counter=0;
  function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output )
    {
        $id_field = $this->db_fields'id'];
        if ( is_object( $args[0] ) ) {

            $args[0]->has_children = ! empty( $children_elements$element->$id_field] );
        }
        return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }
pour ce

qui est des parents je sais pas moi je l'inséer dans mon query_posts

query_posts('post_type=homepage&orderby=menu_order&post_parent='.$parent.'&order=ASC&showposts=-1');

voila :) plus détails m'aidera a mieux te répondre :)

Antoineb, il y a 13 ans

si tu veux c'est pour faire un filtre dynamique pour un portfolio

Antoineb, il y a 13 ans

Personne pour m'aider ?

@BenFarhat pour discuter voici mon Skype antoine.beringer