前回「walk_page_tree()」を使ってページのリンクリストを作りましたが、どうやら環境によってエラーが出てしまうようです。そこで、ちょっと作り直すついでに・・・と言うか必要に駆られて「get_pages()」で取り出される内容を調べてみました。

「get_pages ()」で取り出されるのはブログ記事やページなどの情報でした。ポストIDや本文、コメントの許可の有無まで全ての情報が配列変数として取り出されます。 全てを調べたわけではありませんので、不明な部分もありますが、以下にそのリストをあげておきます。なお、調査したWordpressのバージョンは Wordpress ME 2.2.3です。

  • array()
    • object(stdClass)()
      • ID : ポストID
      • post_author : 投稿者ID
      • post_date : 投稿日時 (YYYY-MM-DD hh:mm:ss)
      • post_date_gmt : 投稿日時[GMT] (YYYY-MM-DD hh:mm:ss)
      • post_content : 記事・ページ本文
      • post_title : 記事・ページタイトル
      • post_category : 記事カテゴリーID
      • post_excerpt : 引用文 (抜粋)
      • post_status : ステータス (公開、草稿、非公開)
      • comment_status : コメントの許可 (オープン、クローズ)
      • ping_status : ピン通知(トラックバック)の許可 (オープン、クローズ)
      • post_password : 記事・ページのパスワード
      • post_name : 記事・ページスラッグ
      • to_ping : トラックバック先?
      • pinged : ?
      • post_modified : 更新日時 (YYYY-MM-DD hh:mm:ss)
      • post_modified_gmt : 更新日時[GMT] (YYYY-MM-DD hh:mm:ss)
      • post_content_filtered : ?
      • post_parent : 親ページのポストID
      • guid : 記事・ページのURL
      • menu_order : ページの表示順
      • post_type : ポストの種類 (記事、ページ)
      • post_mimetype : ポストのMimetype
      • comment_count : コメント数?

いくつか不明な部分がありますが、ページのリンクリストを作るのに問題は無いです。
※識者の方、教えていただければ幸いです。

リンクリストを作るのに必要な要素は「ページタイトル」と「URL」です。これの取り出し方ですが、以下の通り。

1件目のページの場合
$pages = get_pages();
echo ($pages[0]->post_title); // ページタイトル
echo ($pages[0]->guid); // URL

「get_pages ()」に引数を渡すことで指定したページの子ページや取り出す順番を指定できます。引数は前回の記事でも書いたように「wp_list_pages()」 と同じです。例えばページID 1の子ページをリンクリストとして取り出す場合は以下のようにします。

$childOf = ‘child_of=1′;
$pages = get_pages($childOf);
foreach($pages as $pageObj) {
echo (’<li><a href=”‘ . $pageObj->guid . ‘/”>’ . $pageObj->post_title . “</a></li>\n”);
}

これで<li>タグで囲んだリストを作り出せます。必要に応じて「echo」の内容を変更すれば、思うようにコントロール可能です。

関連記事