term_idとterm_taxonomy_idの違いは何ですか


20

タイトルはそれをすべて言います。現在、カスタム分類では、用語IDと分類名を使用して用語を取得しています。

この質問は以前に聞かれたと思いますが、どこにも見つからないでしょう!だから、誰かが何か答えがあるかどうか尋ねてみようと思った。

回答:


21

Wordpressのドキュメントを見ると、Wordpress Taxonomiesが見つかります。

  • term_idは、用語テーブル内の用語のIDです。
  • term_taxonomy_idは、term + taxonomyペアの一意のIDです。

term_idのみに基づいて用語を操作および取得しても、重複は発生しませんか?
ダイシー

1
実際に最後の質問に答えただけです。wp_termsテーブルを見て、term_idのみを使用すると安全です。ご返信いただきありがとうございます@Juan
Daithí12年

2
WordPress 4.2ではすべての用語が分割されていたことに注意してください。つまり、各列はテーブルterm_id内で1回だけ出現しterm_taxonomyます(列が一意ではなく、用語が分類法間で共有される前)。これは、分類法のロードマップに基づいて、今後も進化し続ける可能性があります。その一部は、用語と用語分類テーブル結合することです。
JD

11

コーデックスは言う:

  • term_idは、用語テーブル内の用語のIDです。
  • term_taxonomy_idは、term + taxonomyペアの一意のIDです

これは何を意味するのでしょうか?

用語は単語です。タグ、カテゴリ、カスタム分類などの分類に属することができます。問題は、同じ用語を含む複数の分類法が存在する可能性があることです。

「fattening」という用語があるとします。この単語にはID番号があります。これはterm_idです。この単語がどのように使用されているか、つまり、どの分類法でその用語が表示されるかには依存しません。

投稿タグとしての「fattening」という言葉にも数字が付いています。これはterm_taxonomy_idです。「投稿タグ 'fattening'」に対応します。

「ファッテン」と呼ばれるカテゴリもあるかもしれません。term_idは同じですが、「カテゴリ 'fattening'」のterm_taxonomy_idは異なります。


5

これは設計のより大きな理解の一部であるため、全体として説明します... :)

WP 4.5.3には、これらすべてのテーブルがまだあります(プレフィックスなしで説明します)。

  • 投稿
  • term_relationships
  • term_taxonomy
  • 条項

投稿用語の読み取り可能な名前を取得するためのパスは、それらすべてを通過します。


主要な識別子をここに投稿しますID- 投稿のID(任意のタイプ)

term_relationships
の店舗のペアを:
object_id- できることposts.ID(がないではないことがあります)
term_taxonomy_id-これは、NOT用語(カテゴリ)のIDが、のID 関係用語(カテゴリ)と分類の間(「カテゴリタイプ」)

term_taxonomy
ここでの主な識別子は上にterm_taxonomy_id記述されています^^
もう1つの重要な列:
term_id- 用語のID(カテゴリ)
taxonomy-用語の分類法( "カテゴリタイプ")を格納します

この1は、面白いように見えるかもしれませんが、初期の用語は(ここでより多くの分類法を持っているために機能を追加することでした予定のいくつかの例の意味を作ることができます)。


ここの主な識別子は次のとおりです。- term_idカテゴリのID
ここにあるもう1つの重要な列は次のとおりです
name。-読み取り可能なカテゴリ名(例:「音楽ジャンル」)
slug-たとえばURLで使用可能な用語のスラッグ

したがって、すべての公開された投稿とカテゴリ名を持つすべてのカテゴリ取得するための SQLを示す残忍なデモ は次のようになります(独自のWP DBでテストするときにテーブルにプレフィックスを追加します):

SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids 
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
    (posts.post_status='publish') 
    #optionally you can filter by a certain post_type:
    #AND
    #(posts.post_type='some_post_type')
)
ORDER BY posts.ID ASC

2

用語は、それ自体ではカテゴリまたはタグではありません。term_taxonomyテーブルを介してコンテキストを指定する必要があります。

term_taxonomyテーブルは、分類内に用語を配置します。これは、用語をカテゴリタグ、またはカスタム分類の一部(または分類の組み合わせ)にするものです。

term_id 用語表内の用語のIDです。

term_taxonomy_id term + taxonomyペアの一意のIDです。

term_id同じように、常にユニークですterm_taxonomy_id。両方ともAuto Incrementテーブル構造にあります。

テーブルには、wp_term_taxonomyワードプレスが例えばWoocommerceの使用を妨害することができますので、必ずカテゴリが作成されていることを例になり:product_tagproduct_typeproduct_cat、それらのすべては、いわゆるカスタム分類法です。このテーブルは、親/子の構造もバインドします。それはコラムparentです。

最終テーブルterm_relationshipsは、投稿やリンクなどのオブジェクトをterm_taxonomyテーブルのterm_taxonomy_idに関連付けます。

Woocommerceを例として再度選択すると、このテーブルは投稿タイプproductsを分類にリンクproduct_catしますwp_terms。この表には含まれterm_idnameslugterm_group。(term_group私は個人的に使用したことはありません)

うまくいけば、上記の違いにより、Wordpressがこれらのテーブルをどのように使用するかについて、少し明確になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.