web-dev-qa-db-fra.com

Conditions multiples pour le titre de la page enfant

J'ai essayé de travailler avec balises conditionnelles et je ne peux pas comprendre ce problème. PHP novice ici.

Sur les sous-pages, je dois afficher le titre de la page parent ainsi que le titre de la page. Je l'ai avec ça:

<h1><?php echo get_the_title($post->post_parent);?></h1>
<h2><?php the_title(); ?></h2>

Mais le problème que j'ai maintenant est que sur les pages parentes le titre de la page est affiché deux fois, comme le titre de la page parente et le titre de la page. Au lieu de cela, lorsque sur une page parent, j'ai besoin du h2 pour afficher "Sélectionnez une sous-page", s'il y a des pages enfants ... ou rien, s'il n'y a pas de pages enfants. Quelque chose comme ceci est ce que je pense est possible:

<h1><?php echo get_the_title($post->post_parent);?></h1>
<h2>
  <?php 
    if is_parent_page_without_children() {echo '';} ;
    elseif is_parent_page_with_children() {echo 'select a sub-page';} ;
    else the_title();
  ?>
</h2>
2
codeview

J'ai trouvé cela dans le codex de balises conditionnelles , section 2.12:

"Remarque: Il n’existe aucune fonction permettant de vérifier si une page est une sous-page. Nous pouvons contourner le problème:

if ( is_page() && $post->post_parent > 0 ) { 
   echo "This is a child page";
}

Donc, je l'ai modifié comme ci-dessous et j'utiliserai simplement l'attribut "title_li" de la fonction wp_list_pages pour afficher "sélectionnez une sous-page" (pas exactement ce que je cherchais, mais assez simple et je peux travailler avec cela pour la conception du site web j'en ai besoin pour).

<h1><?php echo get_the_title($post->post_parent);?></h1>
<h2><?php if (is_page() && $post->post_parent > 0 ) { the_title();}?></h2>

http://codex.wordpress.org/Conditional_Tags#A_PAGE_Page

1
codeview

Sur la base de l'échange de commentaires, voici ce que je pense que vous recherchez:

<h1><?php echo get_the_title( $post->post_parent ? $post->post_parent : $post->ID ) ?></h1>

<?php if ( $list = wp_list_pages( "echo=0&child_of=$post->ID" ) ) : ?>

    <h2>Select a sub-page</h2>
    <ul>
        <?php echo $list ?>
    </ul>

<?php elseif ( $post->parent ) : ?>

    <h2><?php the_title() ?></h2>

<?php endif ?>
1
TheDeadMedic
<?php if ( $post->post_parent ): ?>
<h1><?php echo get_the_title($post->post_parent); ?></h1>
<h2><?php the_title(); ?></h2>
<?php else: ?>
<h1><?php the_title(); ?></h1>
<?php if ( get_pages( array('child_of' => $post->ID) ) ): ?>
<h2>select a sub-page</h2>
<?php endif; ?>
<?php endif; ?>

Quelque chose comme ça devrait faire le travail. Non testé, quelques bugs/fautes de frappe peuvent y rester.

0
Krzysiek Dróżdż