web-dev-qa-db-ja.com

子カテゴリは複数の親を持つことができますか?

私はWordPressコーデックスのget_categories()関数を見て、各「ルート親」(親を持たないカテゴリ)のすべての子を返す方法を調べます。たとえば、複数の「ルート親」の子に興味がある場合は、同じ「子」のインスタンスが異なる「ルート親」の下に複数存在するかどうかを知りたいです。

だから、これは私に尋ねることになります:

WordPressの子カテゴリに複数の異なる親を含めることができますか?

4
gate_engineer

いいえ 、用語は多くの子を持つことができますが、親は1つだけです。データベース内の親フィールドは単一の値しか保持できません。

多対多の関係ではなく、階層的な1対多の関係です。

投稿についても同じです。 1人の投稿には1人の親しか持てませんが、多くの子を持つことができます。それを回避するには分類法を使用します。

wp_term_taxonomyの補足説明とハードプルーフ

同じ用語がこのテーブルに複数のエントリを持つことで、複数の親を持ち、複数の親用語で共有される可能性があることが示唆されています。

これがデータベーススキーマです。

enter image description here

同じ用語と分類法が複数回参照されているかどうかがわかりますが、親が異なる場合、1つの用語に複数の親を含めることができますか。

いいえ term_idtaxonomy_idは両方とも unique なので、スキーマを変更せずにそのテーブルに作成することはできません。これを実証するために、私は続編プロを開きました。

ここに私たちのブログの私のローカルコピーに用語があります。

enter image description here

それは4の親を持ち、それに5の2番目の親を与えようとしましょう:

INSERT INTO `tjn2_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`)
VALUES
    (13, 13, 'category', '', 5, 0);

このクエリを実行すると、次のエラーが発生します。

enter image description here

いいえ、用語は複数の親を持つことはできません。たとえ可能であったとしても、生のSQLステートメントの不足分を見つけるメカニズムはAPIにはないでしょう。そのためそのような用語はフロントエンドとバックエンドのUIでは役に立たず、使用できません

5
Tom J Nowell

Tax-meta-class http://en.bainternet.info/wordpress-taxonomies-extra-fields-the-easy-way/ を使用してカテゴリを構成してみてください。

分類法(カテゴリ、タグ、カスタム税)にメタフィールドを追加することができます。

0
Benoti