私は コンディショナルタグ を使用しようとしていますが、この問題に頭を包むことはできません。 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>
私はこれを 条件付きタグ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>
コメント交換に基づいて、これは私があなたがしていると思うものです:
<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 ?>
<?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; ?>
このようなことでうまくいくはずです。テストされていない、いくつかのバグ/タイプミスがそこにあるかもしれません。