// 例.店舗情報という親ページ(記事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