web-dev-qa-db-fra.com

Des limaces comme chapelure pour Pages

J'essaie de créer une fonction qui crée un fil d'Ariane de pages en dehors de The Loop. Ces chemins de navigation indiquent le chemin d'accès de la page d'accueil à la (sous) page actuelle.

Par exemple, sur la page "example.com/attractions/parcs/parc-name", ce fil d'Ariane serait affiché: Accueil> Attractions> Parcs> Nom du parc

J'ai fait beaucoup de recherches et trouvé plusieurs extraits de code pouvant exécuter une partie de la fonction, mais mes compétences en PHP ne sont pas suffisantes pour créer la fonction entière moi-même.

C'est ce que j'ai

  • Obtenez le post slug dans la boucle: $slug = basename(get_permalink()); ( src )
  • Récupérer le message en dehors de The Loop: global $post; echo $post->post_name; (src: voir ci-dessus)
  • Obtenir les messages parsous <?php global $post; if($post->post_parent) { $post_data = get_post($post->post_parent); echo $post_data->post_name; } ?> ( src )
  • Obtenez un fil d'ariane de pages utilisant des titres de page (c'est ce que j'utilise maintenant):

    if ( is_page() ) 
    {
      $post = $wp_query->get_queried_object();
      if ( $post->post_parent == 0 )
      { 
        echo "<li> &raquo; ".the_title('','', FALSE)."</li>"; 
      } 
      else 
      {
        $title = the_title('','', FALSE);
        $ancestors = array_reverse( get_post_ancestors( $post->ID ) );
        array_Push($ancestors, $post->ID);
        foreach ( $ancestors as $ancestor )
        {
          if( $ancestor != end($ancestors) )
          {
            echo '<li> &raquo; <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>';
          } 
          else 
          {
            echo '<li> &raquo; '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>';
          }
        }
      }
    }
    

Toutes les idées, suggestions et solutions sont très appréciées :)

3
Mattvic

Ok, le problème est résolu. Je vais ajouter le script ci-dessous. J'espère que c'est utile pour quelqu'un.

if ( is_page() ) {
            $post = $wp_query->get_queried_object();
            if ( $post->post_parent == 0 ){ echo "<li> &raquo; ".ucwords(str_replace("-", " ", $post->post_name))."</li>"; } 
            else {
                $title = the_title('','', FALSE);
                $ancestors = array_reverse( get_post_ancestors( $post->ID ) );
                array_Push($ancestors, $post->ID);

                foreach ( $ancestors as $ancestor ){
                    if( $ancestor != end($ancestors) ){
                        echo '<li> &raquo; <a href="'. get_permalink($ancestor) .'">'. ucwords(str_replace("-", " ", basename(get_permalink($ancestor)))) .'</a></li>';
                    } else {
                        echo '<li> &raquo; '. ucwords(str_replace("-", " ", basename(get_permalink($ancestor)))) .'</li>';
                    }
                }
            }
} // You just missed this bracket, else this is working awesome! 
3
Mattvic