質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

1回答

6294閲覧

wordpress 固定ページの属性 親を複数登録したい

AkemiTsukamoto

総合スコア10

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2016/03/20 01:32

編集2016/03/20 01:35

WordPressの固定ページの属性を複数設定したいのです。

要するに複数の親ページなどの各コンテンツで1つのページを使いまわしたいのですが、可能でしょうか?

固定ページで Aトマトのページ B赤い野菜 C栄養別:リコピン
があるとします

親)赤い野菜(固定ページ)_子)A(固定ページ)トマトのページ
親)栄養別:リコピン_子)A(固定ページ)トマトのページ

というように、1つの固定のページを 複数の親ページに使用したいのですが、、、

プラグインで可能なのでしょうか?
それともカスタマイズでしょうか?

かなり調べてみたのですが、わからずどなたか教えて下さい。m(__)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

親ページはデータベースの構造上、最大で一つしか設定できないはずです。
テーブル 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_pagemeta_key="crop_group_$pagename"meta_key=1 のポストを引っ張ってくることで、そのグループに所属する野菜の一覧を作ることができます。

ざっくりとはそんな感じです。

投稿2016/03/20 10:25

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問