デイトラでプログラミング始めました

親子ページをフィルタリングして表示 front-page.php

親ページに紐づいた子ページ一覧を表示させる。

親ページの情報を取得

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

投稿ページ一覧を表示する