Fil d’ariane SEOMIX et Taxonomy (Créer un compte)

  • Statut : non résolu
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #537868
    pleindeblagues
    Membre
    Chevalier WordPress
    161 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 3.9
    – Version de PHP/MySQL : 5
    – Thème utilisé : Fait de A à Z

    Problème(s) rencontré(s) :

    J’utilise depuis un moment un code pour mon linking remontant qui se matérialise par un fil d’Ariane venant du blog SEOMIX (voir ici).

    Ce code me convient parfaitement car sans plugin. Or mes connaissances en PHP me limite sur un point relatif au custom toxonomy que j’utilise sur un site.

    Tout d’abord j’ai une taxonomy qui se comporte comme une catégorie. J’ai donc des “rubriques” enfants et parents au sein de la taxonomy. Sur mes pages, j’ai le fameux fil d’Ariane SEOMIX. Or celui-ci n’affiche pas les catégories parents et enfants au sein de ma taxonomy.

    Pour imager le tout et vous exposer de manière plus clair mon problème je vais prendre un exemple.

    Ma taxonomie : Voiture
    Parent : Voiture de sport
    Enfant : Voiture de sport rouge

    Si je vais dans ma catégorie “Voiture de sport rouge” mon fil d’Ariane devrait donc se matérialiser comme cela :

    Accueil > Voiture > Voiture de Sport > Voiture de Sport Rouge

    Or il est actuellement comme ceci :

    Accueil > Voiture

    Les catégories parents sont tout bonnement ignorées.

    Le code que j’ai au sein de mon fichier function.php est le suivant :

    /**
     BreadCrumbs
     * Author : Daniel Roch
     */
      // Get parent categories with schema.org data
      function seomix_content_get_category_parents($id, $link = false,$separator = ‘/’,$nicename = false,$visited = array()) {
      $final = ”;
      $parent = &get_category($id);
      if (is_wp_error($parent))
        return $parent;
      if ($nicename)
        $name = $parent->name;
      else
        $name = $parent->cat_name;
      if ($parent->parent && ($parent->parent != $parent->term_id ) && !in_array($parent->parent, $visited)) {
        $visited[] = $parent->parent;
        $final .= seomix_content_get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
      }
      if ($link)
        $final .= ‘<span typeof="v:Breadcrumb"><a href="' . get_category_link( $parent->term_id ) . ‘” title=”Voir tous les articles de ‘.$parent->cat_name.'” rel=”v:url” property=”v:title”>’.$name.’</a></span>‘ . $separator;
      else
        $final .= $name.$separator;
      return $final;}
    
      // Breadcrumb
      function seomix_content_breadcrumb() {
      // Global vars
      global $wp_query;
      $paged = get_query_var(‘paged’);
      $sep = ‘ » ‘;
      $data = ‘<span typeof="v:Breadcrumb">‘;
      $dataend = ‘</span>‘;
      $final = ‘<div xmlns:v="http://rdf.data-vocabulary.org/#">Vous êtes ici : ‘;  
      $startdefault = $data.’<a title="'. get_bloginfo('name') .'" href="'.home_url().'" rel="v:url" property="v:title">‘. get_bloginfo(‘name’) .’</a>‘.$dataend;
      $starthome = ‘Accueil de ‘. get_bloginfo(‘name’);
    
      // Breadcrumb start
      if ( is_front_page() && is_home() ){
        // Default homepage
        if ( $paged >= 1 )    
          $final .= $startdefault;
        else
          $final .= $starthome;
      } elseif ( is_front_page() ){
        //Static homepage
        $final .= $starthome;
      } elseif ( is_home() ){
        //Blog page
        if ( $paged >= 1 ) {  
          $url = get_page_link(get_option(‘page_for_posts’));  
          $final .= $startdefault.$sep.$data.’<a href="'.$url.'" rel="v:url" property="v:title" title="Les articles">Les articles</a>‘.$dataend;}
        else
          $final .= $startdefault.$sep.’Les articles’;
      } else {
        //everyting else
        $final .= $startdefault.$sep;}
    
      // Prevent other code to interfer with static front page et blog page
      if ( is_front_page() && is_home() ){// Default homepage
      } elseif ( is_front_page()){//Static homepage
      } elseif ( is_home()){//Blog page
      }
      //Attachment
      elseif ( is_attachment()){
        global $post;
        $parent = get_post($post->post_parent);
        $id = $parent->ID;
        $category = get_the_category($id);
        $category_id = get_cat_ID( $category[0]->cat_name );
        $permalink = get_permalink( $id );
        $title = $parent->post_title;
        $final .= seomix_content_get_category_parents($category_id,TRUE,$sep).$data.”<a href='$permalink' rel='v:url' property='v:title' title='$title'>$title</a>“.$dataend.$sep.the_title(”,”,FALSE);}
      // Post type
      elseif ( is_single() && !is_singular(‘post’)){
         global $post;
         $nom = get_post_type($post);
         $archive = get_post_type_archive_link($nom);
         $mypost = $post->post_title;
         $final .= $data.’<a href="'.$archive.'" rel="v:url" property="v:title" title="'.$nom.'">‘.$nom.’</a>‘.$dataend.$sep.$mypost;}
      //post
      elseif ( is_single()){
        // Post categories
        $category = get_the_category();
        $category_id = get_cat_ID( $category[0]->cat_name );
        if ($category_id != 0)
          $final .= seomix_content_get_category_parents($category_id,TRUE,$sep);
        elseif ($category_id == 0) {
          $post_type = get_post_type();
          $tata = get_post_type_object( $post_type );
          $titrearchive = $tata->labels->menu_name;
          $urlarchive = get_post_type_archive_link( $post_type );
          $final .= $data.’<a class="breadl" href="'.$urlarchive.'" title="'.$titrearchive.'" rel="v:url" property="v:title">‘.$titrearchive.’</a>‘.$dataend;}
        // With Comments pages
        $cpage = get_query_var( ‘cpage’ );
        if (is_single() && $cpage > 0) {
          global $post;
          $permalink = get_permalink( $post->ID );
          $title = $post->post_title;
          $final .= $data.”<a href='$permalink' rel='v:url' property='v:title' title='$title'>$title</a>“.$dataend;
          $final .= $sep.”Commentaires page $cpage”;}
        // Without Comments pages
        else
          $final .= the_title(”,”,FALSE);}
      // Categories
      elseif ( is_category() ) {
        // Vars
        $categoryid       = $GLOBALS[‘cat’];
        $category         = get_category($categoryid);
        $categoryparent   = get_category($category->parent);
        //Render
        if ($category->parent != 0)
          $final .= seomix_content_get_category_parents($categoryparent, true, $sep, true);
        if ( $paged <= 1 )
          $final .= single_cat_title("", false);
        else
          $final .= $data.'<a href="' . get_category_link( $category ) . '" title="Voir tous les articles de '.single_cat_title("", false).'" rel="v:url" property="v:title">‘.single_cat_title(“”, false).’</a>‘.$dataend;}
      // Page
      elseif ( is_page() && !is_home() ) {
        $post = $wp_query->get_queried_object();
        // Simple page
        if ( $post->post_parent == 0 )
          $final .= the_title(”,”,FALSE);
        // Page with ancestors
        elseif ( $post->post_parent != 0 ) {
          $title = the_title(”,”,FALSE);
          $ancestors = array_reverse(get_post_ancestors($post->ID));
          array_push($ancestors, $post->ID);
          $count = count ($ancestors);$i=0;
          foreach ( $ancestors as $ancestor ){
            if( $ancestor != end($ancestors) ){
              $name = strip_tags( apply_filters( ‘single_post_title’, get_the_title( $ancestor ) ) );
              $final .= $data.’<a title="'.$name.'" href="'. get_permalink($ancestor) .'" rel="v:url" property="v:title">‘.$name.’</a>‘.$dataend;
              $i++;
              if ($i < $ancestors)
                $final .= $sep;
            }
            else
              $final .= strip_tags(apply_filters('single_post_title',get_the_title($ancestor)));
            }}}
      // authors
      elseif ( is_author() ) {
        if(get_query_var('author_name'))
            $curauth = get_user_by('slug', get_query_var('author_name'));
        else
            $curauth = get_userdata(get_query_var('author'));
        $final .= "Articles de l'auteur ".$curauth->nickname;}  
      // tags
      elseif ( is_tag() ){
        $final .= “Articles sur le thème “.single_tag_title(“”,FALSE);}
      // Search
      elseif ( is_search() ) {
        $final .= “Résultats de votre recherche sur “”.get_search_query().”””;}    
      // Dates
      elseif ( is_date() ) {
        if ( is_day() ) {
          $year = get_year_link(”);
          $final .= $data.’<a title="'.get_query_var("year").'" href="'.$year.'" rel="v:url" property="v:title">‘.get_query_var(“year”).’</a>‘.$dataend;
          $month = get_month_link( get_query_var(‘year’), get_query_var(‘monthnum’) );
          $final .= $sep.$data.’<a title="'.single_month_title(' ',false).'" href="'.$month.'" rel="v:url" property="v:title">‘.single_month_title(‘ ‘,false).’</a>‘.$dataend;
          $final .= $sep.”Archives pour “.get_the_date();}
        elseif ( is_month() ) {
          $year = get_year_link(”);
          $final .= $data.’<a title="'.get_query_var("year").'" href="'.$year.'" rel="v:url" property="v:title">‘.get_query_var(“year”).’</a>‘.$dataend;
          $final .= $sep.”Archives pour “.single_month_title(‘ ‘,false);}
        elseif ( is_year() )
          $final .= “Archives pour “.get_query_var(‘year’);}
      // 404 page
      elseif ( is_404())
        $final .= “404 Page non trouvée”;
      // Other Archives
      elseif ( is_archive() ){
        $posttype = get_post_type();
        $posttypeobject = get_post_type_object( $posttype );
        $taxonomie = get_taxonomy( get_query_var( ‘taxonomy’ ) );
        $titrearchive = $posttypeobject->labels->menu_name;
        if (!empty($taxonomie))
          $final .= $taxonomie->labels->name;
        else
          $final .= $titrearchive;}
      // Pagination
      if ( $paged >= 1 )
        $final .= $sep.’Page ‘.$paged;
      // The End
      $final .= ‘</div>‘;
      echo $final;}

    J’ai bien essayé de me renseigner en lisant les commentaires de l’article mais je n’ai pas trouver de réponse, l’auteur ne donne pas la solution :

    Question d’un utilisateur :

    Tedj Nemoura – Le 12 novembre 2013, 14:07

    Bonjour, très bon fil d’ariane ! Merci encore pour cet article qui m’a sauvé du poids d’un plugin lourd et mal optimisé ou qui n’est pas assez personnalisable.

    Par contre, j’aurais une question : comment afficher la catégorie parente d’une Custom Taxonomie ? J’ai beau chercher, je ne trouve pas :( !

    Merci d’avance pour les réponses futures 🙂.

    Réponse de l’auteur :

    Daniel Roch – Le 13 novembre 2013, 09:49

    Le code ne le permet pas de base. Il faudra aller modifier le code pour pouvoir faire cela.

    Ma question est donc la suivante :

    Comment faire pour afficher mes parents et enfants dans mon fil d’Ariane de ma taxonomie “Voiture”?

    Je vous remercie par avance de prendre le temps de me répondre.

Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.