WordPress 固定ページ一覧の表示方法
最終更新日 - 公開日 2016.01.04
by
WordPress で固定ページ一覧を表示する方法を紹介します。
例えば、サイトマップで固定ページ一覧を表示したいときに便利な方法です。
テンプレートタグ wp_list_pages() を使った表示方法
WordPress のテンプレートタグ wp_list_pages()
は固定ページへのリンクリストを表示します。
次のコードは、固定ページのリンクリストを表示する方法です。
<ul>
<?php wp_list_pages(); ?>
</ul>
例えば、固定ページに紐づく子・孫ページがあるとき、HTML は次のように生成されます。
<ul>
<li class="pagenav">
固定ページ
<ul>
<li class="page_item page-item-1111"><a href="#">ページ</a></li>
<li class="page_item page-item-2222 current_page_item"><a href="#">現在表示しているページ</a></li>
<li class="page_item page-item-3333 page_item_has_children">
<a href="#">親ページ</a>
<ul class='children'>
<li class="page_item page-item-4444 page_item_has_children">
<a href="#">子ページ</a>
<ul class='children'>
<li class="page_item page-item-5555"><a href="#">孫ページ</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
表示された固定ページ一覧に、現在表示されているページが含まれるときは、カレントクラス current_page_item
が付与されます。
リストの見出しを非表示または変更する方法
wp_list_pages
で出力した固定ページ一覧には、見出し(デフォルトは「ページ」)が表示されます。
見出しの文言を非表示にするときはパラメーター title_li
を追加、値を空にします。
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
見出しは残したいけど、文言を変更する時は、値に差し替えたい文言を追加します。
例えば、見出しを「固定ページ一覧」にするときは、次のコードを追加します。
<ul>
<?php wp_list_pages('title_li=固定ページ一覧'); ?>
</ul>
指定したIDの子ページ一覧を表示する方法
指定したIDの子ページを表示する方法を紹介します。
条件分岐を使い、子ページがないときは表示しないようにします。そのときは echo=0
を追加します。
次のコードは、ページIDが 123 のときに、そのページに紐づく子ページの一覧を表示します。
<?php // 指定したIDの子ページ一覧を表示
$children = wp_list_pages('title_li=&child_of=123&echo=0'); // ページIDを指定
if($children){ // 子ページがあるときに一覧を表示
echo '<ul>';
echo $children;
echo '</ul>';
}
?>
スラッグからIDを取得して子ページ一覧を表示する方法
IDを調べるのが面倒なときは get_page_by_path
を使ってスラッグからIDを取得することもできます。
例えば、ページのスラッグが about の子ページの一覧を取得するときは、次のコードを追加します。
<?php // 指定したIDの子ページ一覧を表示
$page_ID = get_page_by_path('about'); // ID取得用の固定ページオブジェクトの取得
$children = wp_list_pages(array( // ページリストの取得
'title_li' => '', // 見出しの非表示
'child_of' => $page_ID->ID, // ページIDを指定
'echo' => '0' // PHP で使うために HTML テキストとして返す
));
if($children){ // 子ページがあるときに一覧を表示
echo '<ul>';
echo $children;
echo '</ul>';
}
?>
子ページの子ページ一覧を取得するときは、次のように親ページのスラッグを併記します。
$page_ID = get_page_by_path('parent/child'); // 子ページのときは親のスラッグを併記する
特定のページを除外する方法
リンクリストから特定のページを除外するときはパラメーター exclude
を追加します。
次のコードは、見出しを非表示にして特定のページ(ページID 10,11 のページ)を除外する方法です。
<ul>
<?php wp_list_pages('title_li=&exclude=10,11'); ?>
</ul>
除外するページのIDを確認するときは、管理画面から各ページの詳細ページで表示されるアドレスから確認してください。
投稿タイプを指定する方法
ページリストを固定ページではなく、投稿やカスタム投稿タイプを指定するとき post_type
を追加します。
次のコードは、投稿タイプが products
のときの表示方法です。
<ul>
<?php wp_list_pages('title_li=&post_type=products'); ?>
</ul>
テンプレートタグ get_posts を使った表示方法
テンプレートタグ get_posts
は、パラメーターに基づいて投稿データを作成します。
リンクリストを自由にマークアップしたいときこちらを選択するとよいかもしれません。
次のコードは、固定ページのリンクリストを昇順ですべて表示する方法です。
<?php // 固定ページ一覧を表示する
$page_list = get_posts( 'numberposts=-1&order=ASC&post_type=page' ); // ページ情報の取得
foreach ( $page_list as $page_item ) {
echo '<a href="'. get_page_link($page_item->ID).'">'.get_the_title($page_item->ID).'</a>'; // ページの情報を表示
}
?>
リンクリストの表示件数を変更するときは numberposts=-1
の -1
(すべて表示)から任意の数字に変更してください。
昇順ではなく降順で指定するときは order=ASC
を DESC
に変更してください。
投稿タイプの指定は post_type=page
の page
を変更してください。
まとめ
WordPress で固定ページ一覧を表示する方法を紹介しました。