表示されているページに応じてロゴを出力しようとしています。
<?php if ( is_page('home') || is_page('services') ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }
else { ?>
<div class="col-md-2 col-sm-4">
<h1 class="logo imglogo">
<a href="http://websiteaddress.com">
<img src="<?php echo get_bloginfo('template_directory');?>/images/picturehere.png" alt="title here"></a>
</h1>
</div>
<?php } ?>
上記のコードは問題なく動作しますが、 'services'のサブページにロゴイメージスワップを適用するにはどうすればよいですか。
<?php
global $post;
if ( is_page('home') || is_page('services') ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }
elseif ( preg_match( '#^service(/.+)?$#', $wp->request ) ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php
}
else { ?>
<div class="col-md-2 col-sm-4">
<h1 class="logo imglogo">
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">
<img src="<?php echo get_bloginfo('template_directory');?>/images/picturehere.png" alt=""></a>
</h1>
</div>
<?php } ?>
あなたは$post->post_parent
でそれをすることができます。子ページの親がサービスページかどうかを確認する必要があります。だからこれはあなたがそれをチェックする方法です。
次のコードの123
はあなたのサービスページのページIDであると仮定しました。実際のIDに置き換えてください。
if ( 123 == $post->post_parent ) { ?>
<div class="col-md-2 col-sm-4">
<?php ci_e_logo('<h1 class="logo ' . get_logo_class() . '">', '</h1>'); ?>
</div>
<?php }
この方法で投稿ページ/投稿名を取得できます。
$parent = array_reverse(get_post_ancestors($post->ID));
$page_parent = get_page($parent[0]);
echo $page_parent->post_name;
あなたはあなたの要求に従って条件を使うことができます。
robert hueの答えと同じように、この解決策はあなたに親要素のIDを取得します:
echo get_post_field( 'post_parent' );
2番目のパラメータはオプションであり、IDを保持できます(ループの外側にいるとき、または特定の要素の親をクエリするときのために)
$post_ID = 666;
echo get_post_field( 'post_parent', $post_ID );
この関数はpostスラグ、ステータス、タイプのようにpostテーブルからあなたにどんなフィールドでも得ることができます... codex のドキュメントを見てください。
あなたの場合、関数はこのようになります。
if ( get_post_field( 'post_parent' ) === 9 ) :
//child of page ID 9
endif;
Get_post_ancestors($ post)を使用してください。現在表示されている投稿があなたの親ページの子である場合、それは配列を返します。
$ post_current = get_post(); $ args = array( 'post_parent' => $ parent_id、//のID親 'posts_per_page' => -1、 'post_type' => 'page'、 ); $ children = get_posts ($ args); $ is_child = false; foreach($ fとしての$ children){ if($ f-> ID == $ post_current-> post_parent){ //それは子です $ is_child = true; break; } } [ 。[。] if($ is_child){ //私は子供です... } else { //子供ではありません... }