Webデザイン

WordPressで説明付き固定ページ一覧を出力する方法

Wordpressで説明付き固定ページ一覧を出力する方法

やぁみんな! atomだよ!
今回は、WordPressで説明付き固定ページ一覧を出力する方法をご紹介するぞ。

どういうことかというと、↓こういう固定ページの一覧を自動的に出力したいってことなんだ。

こういう説明付きの固定ページ一覧を自動的に出力したい!

wp_list_pages()じゃイヤ!

WordPressで固定ページ一覧を出力するタグとしては、wp_list_pages() がある。
でもこれだと、リンク付きのページタイトルがリスト表示されるだけだ。
今回は、さらに各ページの説明文もつけて出力したい。

get_pages() 関数で固定ページの一覧を取得して出力する

wp_list_pages() 以外に固定ページの一覧を出力する方法はないかと調べてみたところ、固定ページの一覧を取得する get_pages() という関数があることがわかった。

get_pages() 関数の公式リファレンスページを見てみると、ドロップダウンリストとして表示させる場合の例が示されていたぞ。

これを書き換えてやれば、リンク付きのページタイトルをリスト表示させることはできそうだ。
たとえばテーブルにしてみよう。

<table>
<?php 
  $pages = get_pages();
  foreach ( $pages as $page ) {
    $option = '<tr><td><a href="' . get_page_link( $page->ID ) . '">';
    $option .= $page->post_title;
    $option .= '</a></td><td>';
    $option .= ページの説明文;
    $option .= '</td><tr>';
    echo $option;
  }
?>
</table>

これで、リンク付きページタイトルのリストは作ることができたぞ。

さて、次は「ページの説明文」の部分をどうするか。。。

各ページの説明文にはカスタムフィールドを使う

各ページにsummaryというkeyのカスタムフィールドを設定して、そのvalueをページの説明文として出力することにした。

カスタムフィールドの値を出力する方法としては、echo post_custom() がある。
でもこれだとうまくいかない。
なぜうまくいかないかは、各自調べてくれ!

ではどうするかというと、get_post_meta() 関数を使う。

参考:WordPressのカスタムフィールドのデータ取得と表示いろいろ | memocarilog

今回の、summaryというカスタムフィールドの値を取得するには、↓こうなる。

get_post_meta($page->ID, 'summary', true);

取得したカスタムフィールドの値を固定ページ一覧に挿入する

get_post_meta() で取得したカスタムフィールドの値を、get_pages() ~で出力する固定ページ一覧に合体させてやると、↓こうなる!

<table>
<?php 
  $pages = get_pages();
  foreach ( $pages as $page ) {
    $option = '<tr><td><a href="' . get_page_link( $page->ID ) . '">';
    $option .= $page->post_title;
    $option .= '</a></td><td>';
    $option .= get_post_meta($page->ID, 'summary', true);
    $option .= '</td><tr>';
    echo $option;
  }
?>
</table>

やった! これでひとまず説明付き固定ページ一覧の完成だ。
あとは、リストの並び順や除外したいページなど、必要に応じて get_pages() のパラメータを調整しよう。

<table>
<?php 
  $pages = get_pages('sort_column=menu_order&sort_order=ASC');
  foreach ( $pages as $page ) {
    $option = '<tr><td><a href="' . get_page_link( $page->ID ) . '">';
    $option .= $page->post_title;
    $option .= '</a></td><td>';
    $option .= get_post_meta($page->ID, 'summary', true);
    $option .= '</td><tr>';
    echo $option;
  }
?>
</table>

WordPressで説明付き固定ページ一覧を出力する方法、どうだったかな?
みんなも良かったら試してみてくれよな!