親ページはデータベースの構造上、最大で一つしか設定できないはずです。
テーブル wp_post
のカラム post_parent
は親ページがあればその ID、親ページがなければ 0 が入りますので。
ただ、実現したいことが、特定の固定ページが、複数のグループに所属し、それぞれのグループページ(造語です)に表示されたり、URL 上親子関係になるようにしたい、ということであれば、カスタムポストタイプ、カスタムフィールドなどを使って実現できると思います。
そういうプラグインも探せばあると思いますが、私自身は自分でゴリゴリ書いちゃうほうなので、もし自分がそのようにするなら、という方針を書きます。が、今のところ検証環境が整っていないので未検証です。
あと、まったくどうでもいいことですが、私も自分で管理している WordPress で野菜ごとの説明ページを作りたいなあ、そこでは作物の説明ページはカスタムポストタイプで作ろう、と考えていました。
たとえば、次のような URL で「トマト」のページが表示されるようにしたい、とします。
http://wp.example.com/crops/redVegetables/tomato
http://wp.example.com/crops/lycopene/tomato
「赤い野菜」のページも
http://wp.example.com/crops/redVegetables
で表示されるようにします。
野菜ごとの固定ページは普通の固定ページ、すなわちポストタイプ page
ではなく、専用のカスタムポストタイプ crop_page
とかにします。野菜のグループ(たとえば「赤い野菜」)のページも、やはり専用のカスタムポストタイプ crop_group_page
とかにします。
そして、先の URL で crop_page
が表示されるよう、カスタムパーマリンクの設定をします。具体的には、functions.php
や自前のプラグインの中で次のコードが実行されるようにします。
php
1function addMyRewriteRules() {
2 add_rewrite_rule(
3 '^crops/(\w+)/(\w+)/?',
4 'index.php?post_type=crop_page&meta_key=crop_group_$matches[1]&meta_value=1&pagename=$matches[2]',
5 'top'); // 野菜ページ用
6 add_rewrite_rule(
7 '^crops/(\w+)/?',
8 'index.php?post_type=crop_group_page&pagename=$matches[1]',
9 'top'); // 野菜グループページ用
10}
11add_action( 'init', 'addMyRewriteRules' );
12
13// カスタムフィールドで検索できるように
14function addMyQueryVarsFilter( $vars ){
15 $vars[] = 'meta_key';
16 $vars[] = 'meta_value';
17 return $vars;
18}
19add_filter( 'query_vars', 'addMyQueryVarsFilter' );
「トマト」のページには crop_page
として作り、スラッグ tomato
を設定します。さらに、所属する野菜グループをカスタムフィールドで設定しておきます。
たとえば、「トマト」の場合に次のカスタムフィールドを設定します。
- 名前:
crop_group_redVegetables
, 値: 1
- 名前:
crop_group_lycopene
, 値: 1
野菜ページの表示は、固定ページ用のものを single-crop_page.php
にコピーした上で適宜いじって作ります。
野菜グループページも single-crop_group_page.php
を作ります。このファイル内では、post_type=crop_page
で meta_key="crop_group_$pagename"
が meta_key=1
のポストを引っ張ってくることで、そのグループに所属する野菜の一覧を作ることができます。
ざっくりとはそんな感じです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。