web-dev-qa-db-ja.com

子ページタイトルの複数の条件

私は コンディショナルタグ を使用しようとしていますが、この問題に頭を包むことはできません。 PHP初心者はここにいます。

サブページでは、私は親ページのタイトルとページのタイトルを表示する必要があります。私はこれでこれを使っています:

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

しかし、私が今抱えている問題は、親ページのページタイトルが、親ページタイトルとページタイトルの2回表示されることです。代わりに、親ページにいる場合、子ページがある場合は "サブページの選択"を表示し、子ページがない場合は何も表示しないようにするにはh2が必要です。このようなことが私が可能であると私が考えているものです:

<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

私はこれを 条件付きタグcodex 、セクション2.12で見つけました。

「注:ページがサブページかどうかを確認する機能はありません。問題を回避することができます。

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

それで私は以下のようにそれを変更して、「サブページの選択」を表示するためにwp_list_pages関数の "title_li"属性を使うでしょうウェブサイト私はそれが必要です)。

<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

コメント交換に基づいて、これは私があなたがしていると思うものです:

<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; ?>

このようなことでうまくいくはずです。テストされていない、いくつかのバグ/タイプミスがそこにあるかもしれません。

0