親ページに紐づいた子ページ一覧を表示させる。
<?php
$shop_obj = get_page_by_path('shop');
$post = $shop_obj;
setup_postdata($post);
$shop_title = get_the_title();
?>
<span class="section-title-en">Shop Information</span>
<h2 class="section-title"><?php the_title(); ?></h2>
<p class="section-lead"><?php the_excerpt(); ?></p>
<?php wp_reset_postdata(); ?>
特定ページの取得:
PHP
$shop_obj = get_page_by_path('shop');
get_page_by_path()
関数を使用して、スラッグが「shop」のページオブジェクトを取得します。- 取得したページオブジェクトを
$shop_obj
変数に格納します。
現在の投稿の設定:
$post = $shop_obj;
setup_postdata($post);
$post
変数に、取得したページオブジェクトを代入します。setup_postdata()
関数は、現在の投稿を指定した投稿オブジェクトに設定します。これにより、the_title()
やthe_excerpt()
などのテンプレートタグが、指定したページの情報に対して動作するようになります。
ページ情報の表示:
PHP
$shop_title = get_the_title();
<span class="section-title-en">Shop Information</span>
<h2 class="section-title"><?php the_title(); ?></h2>
<p class="section-lead"><?php the_excerpt(); ?></p>
$shop_title
変数に、ページのタイトルをget_the_title()
関数を使って取得します。- HTMLの
<span>
タグと<h2>
タグを使って、英語のタイトルと日本語のタイトルを表示します。 the_title()
関数で、ページのタイトルを出力します。the_excerpt()
関数で、ページの抜粋文を出力します。
投稿データのリセット:
PHP
wp_reset_postdata();
コードは注意してご使用ください。
wp_reset_postdata()
関数は、setup_postdata()
関数によって変更された投稿データをリセットします。これにより、次のループや関数で正しい投稿データが使用されるようになります。
子ページ一覧を得るためにサブクエリを回す。今回はfront-page.phpでサブクエリを回すのでget_child_page()を修正する。
function get_child_page($number = -1, $specified_id = null)
{ // 親ページのIDを渡す if (isset($specified_id)): $parent_id = $specified_id; else: $parent_id = get_the_ID(); endif; $args = array( 'post_type' => 'page', 'post_parent' => $parent_id, 'posts_per_page' => $number, 'orderby' => 'date', 'order' => 'DESC', ); $child_pages = new wp_query($args); return $child_pages;
}
//呼び出したい位置で
get_child_page(-1 , $shop_obj->IDf)
//$shop_objは$shop_obj = get_page_by_path('shop');
<button type="button" class="button button-ghost" onclick="javascript:location.href = '<?php echo esc_url(home_url('shop')) ?>'"> <?php echo $shop_title ?>一覧を見る
</button>