試していませんが、
<?php
global $post; // ループの外であるとき
if ( is_page() && $post->post_parent ) {
// 子ページ
} else {
// 子ページではない
}
?>
関数リファレンス/is page
参考まで。
ありがとうございます。
しかしながら、ダメでした。
子ページをすべて拾ってきてしまうようで、
/about/の子にも
/contact/の子にも
全部 「//子ページ」 の内容が出ていました。
if ( is_page(‘about’) && $post->post_parent ) {
ともしてみたのですが、今度はaboutの子ページにも「//子ページ」が出なくなってしまいました。
ありがとうございました。
ちょっと試してみました。
で、親子関係があるものすべてについて汎用的に使えるものではないですが、
<?php
global $post; // ループの外であるとき
if ( is_page() && $post->post_parent ) {
if( $post->post_parent == 'スタイルを同じにしたい親のID' ) {
// やりたい処理
}
} else {
// その他の処理
}
?>
とか、どうですかね。
ページの親のIDを引っ張ってきているので、スタイルを同じにしたい親のID
で同じなら処理を行うという感じです。
なんかもやもやしていますが、この辺をどうにかできればもっとスマートにできると思います。
力およばず、すいません。
ありがとうございます!
やりたい事出来ました!!
wordpressで「○○の子ページ」という指定の仕方は
用意されてないのですね。
重ね重ね、ありがとうございました。
Wordpress4.7で実装されたtemplate_hierarchyフィルターを使ってみたくなったので
こんなのを作ってみました。
//親要素を指定してテンプレートを読み込む
add_filter("page_template_hierarchy","page_chiled_template");
function page_chiled_template(){
$id = get_queried_object_id();
$post = get_post($id);
$parent = get_post($post->post_parent);
$parent_id = $parent->ID; //親要素のID取得
$parentname = $parent->post_name; //親要素のスラッグ取得
$template = get_page_template_slug();
$pagename = get_query_var('pagename');
if ( ! $pagename && $id ) {
// If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
$post = get_queried_object();
if ( $post )
$pagename = $post->post_name;
}
$templates = array();
if ( $template && 0 === validate_file( $template ) )
$templates[] = $template;
//親要素がある場合page-{parentname}-child.phpを設定
if($parentname){
$parentname_decoded = urldecode( $parentname );
if ( $parentname_decoded !== $parentname ) {
$templates[] = "page-{$parentname_decoded}-child.php";
}
$templates[] = "page-$parentname-child.php";
}
//親要素がある場合page-{id}-child.phpを設定
if ( $parent_id )
$templates[] = "page-$parent_id-child.php";
if ( $pagename ) {
$pagename_decoded = urldecode( $pagename );
if ( $pagename_decoded !== $pagename ) {
$templates[] = "page-{$pagename_decoded}.php";
}
$templates[] = "page-$pagename.php";
}
if ( $id )
$templates[] = "page-$id.php";
$templates[] = 'page.php';
return $templates;
}
parentaという親ページにchild1 child2 child3という固定ページが用意されている場合
page-parenta-child.phpを作成するとchild1 child2 child3に反映されます
優先順位としては
1.固定ページに指定されているテンプレートファイル
2.親ページのページスラッグ+child(page-parent-child.php)
3.親ページのID+child(page-100-child.php)
4.子ページのページスラッグ(page-child1.php)
5.子ページのID(page-200.php)
6.page.php
の順番にしていますが子要素のページテンプレートを優先させたいなら2-3と4-5の位置をずらしてもいいかもしれません。