WordPressで記事IDをコード内で動的に取得する方法

// 例.店舗情報という親ページ(記事ID:15)にぶら下がる全子ページを取得する
$shops_posts = new WP_Query('posts_per_page=-1&post_type=page&post_parent=15');

WordPressにて、任意の親ページにぶら下がっている子ページを取得したい時、WP_Query 関数を使ってpost_parentの引数に親ページの記事IDを指定する方法があるが、ここで記事IDを固定値で書いてしまうと、テストサーバ→本サーバなど、環境の変化に対応できなくなる。
(記事ID が環境によって違う場合)

なので、親ページの記事IDに、固定値を使わずに済むようにしてみる。

親ページの記事IDを動的に指定し、子ページ一覧を取得する方法

サンプルコード

// 例.店舗情報という親ページにぶら下がる全子ページを取得する
$tmp_url = get_bloginfo('home');
$tmp_url = $tmp_url."/"."shops"."/"; // 店舗情報のページのパーマリンクを/shops/とする
$tmp_id = url_to_postid( $tmp_url );
$shops_posts = new WP_Query('posts_per_page=-1&post_type=page&post_parent=' . $tmp_id);

解説

url_to_postid 関数を使って、URLから記事IDを取得するようにした。

クエリの説明については、以下の通り。

  • posts_per_page=-1 // 全件取得
  • post_type=page // 固定ページ
  • post_parent=$tmp_id // 親ページが記事ID=$tmp_id

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください