Toolset Types:WordPressで複数の投稿タイプを関連付ける

Toolset Types:WordPressで複数の投稿タイプを関連付ける WordPress
  - 

Typesプラグインのpost relationship(ポストリレーションシップ≒投稿関係)機能を使って異なる投稿タイプを関連づけて接続すると、各投稿タイプに格納されたデータベースを効果的に活用することができます。このページでは、複数の投稿タイプの関連付け(=投稿関係の設定)をおこなう前に知っておきたい基礎知識について解説します。

投稿タイプを構成要素に分解する

例えば、料理のレシピサイトであれば、構成要素としてレシピ・材料・装置の3つが挙げられます。

これらの構成要素をカスタム投稿タイプを使わずに、WordPress標準の「投稿」を使ってレシピサイトを構成する場合は以下のように、材料や調理手順を記事に書いていくだけです。

この方法では、レシピの構成要素(材料と道具)は以下のように、各レシピの投稿に別々に保存されることになります。普通のブログなどと同じです。

次に、上記3つの構成要素を異なるカスタム投稿タイプに分解する場合を考えてみましょう。まず構成要素間の関係性を整理します。

各投稿タイプに格納されているレシピ・材料・道具は、いずれも複数のレシピ・材料・道具と関係しています。具体的な投稿を当てはめてみると以下のようになります。

投稿タイプを分けずにサイトを構成した場合は投稿数が3であったのに対して、上記のように投稿タイプを構成要素ごとに分けると、「投稿タイプ:レシピ」は3つ、「投稿タイプ:材料」は7つ、「投稿タイプ:道具」は6つのエントリ(=投稿)で構成されることになります。

この方法でレシピの記事を完成させるには、レシピのエントリ作成時(投稿編集画面)に対応する材料と道具のエントリを選択して関連付けます。例えば、チーズオムレツのエントリを「親」とし、子エントリとして、卵、チーズ、ボール、泡だて器、フライパンを関連付けるといった具合です。なお、関連付けられたエントリをフロントエンドに表示するには、Viewを作成します。

投稿関係を設定するメリット

構成要素を複数の投稿タイプに分けてそれらを関連付けることには以下のメリットがあります。

  • 高度な検索機能の実装
    上記のレシピサイトであれば材料と道具からレシピを検索できるようになります。例えば卵を使う(または使わない)レシピを検索するといった具合です。
  • 入力作業の効率化と権限の設定
    「材料」や「道具」に特化した投稿画面により情報を集中的に入力可能になるため、入力時のミス(無関係のフィールドへの入力など)を防止できるほか、Toolset Access プラグインで、カスタム投稿タイプごとにユーザー権限を設定し、作業を分担することも可能です。
  • メンテナンス効率の向上
    レシピに登場する材料や道具に関する情報(例:商品名、スペック、アフィリエイトリンク等)に変更があった場合、該当する材料や道具のエントリを修正すれば、それらの材料や道具が使われている全てのレシピ記事に修正が反映されるので、大量のレシピがあってもメンテナンス作業は最小限で済みます。

投稿関係の種類

投稿関係は、構成要素の性質によって以下の3種類があります。

1対1(One to One)

1つの親投稿に対して最大1つの子投稿を関連付ける投稿関係です。例えばダイエットに関するブログなら、ある特定の日の日記(投稿)に対して、対応する体重などの測定値(ex.カスタム投稿タイプ:体組成)を関連付けるように、1対1の投稿関係を設定する場合に使用します。

1対多(One to Many)

1つの親投稿に対して複数の子投稿を関連付けることができる投稿関係です。例えば複数のメーカーの商品を取り扱うサイトで、メーカーAの説明ページに対して、そのメーカーの製造している具体的な商品を関連付けるような場合に使用します。

多対多(Many to Many)

前述のレシピのように、各エントリを複数のエントリと関連付けることができる投稿関係です。

投稿関係の種類の選び方

実際に投稿関係を設定する際、もっとも複雑な「多対多」を選んでおけば、「大は小を兼ねる」というわけではありません。投稿関係はViewによって抽出できる内容と密接に関連しているので、投稿関係の種類の違いを理解した上で適切なものを選択する必要があります。一定の条件下で後から投稿関係の種類を変更することは可能ですが、作成済みのViewの動作への影響など一定のリスクを伴います。

投稿関係は、ごく簡単にいうと投稿間の親子関係の設定なので、親となる投稿は子となる投稿を複数持つことができますが、子投稿は複数の親投稿を持つことができないのが原則です。従って「多対多」の投稿関係の場合は、子投稿にあたる記事から特定の親投稿だけを表示する(例えばパンくずリストのように)ことはできません。

投稿関係の設定方法

投稿関係を設定する具体的な操作については以下の記事を参照してください。

タイトルとURLをコピーしました