get_term()に分類が必要なのはなぜですか?term_idは一意ではありませんか?


8

関連するWPSEの質問では、分類を指定せずにIDのみを指定して用語を取得する方法を尋ねています。私の質問はもっと哲学的です。一般に、WPコアにあるものには理由があります。term_idを用語の主キーにできない理由を理解しようとしています-なぜ分類も必要なのですか?1つの用語レコードを複数の分類法のメンバーにすることはできますか?これは確かに現在APIではサポートされていません。これが望ましいと思われるユースケースはありますか?

それとも、データベース構造の初期の化身の痕跡にある必須$taxonomyパラメータget_term()ですか?


3
完全にはわかりませんが、wp_term_taxonomyテーブルの分類フィールドがそのテーブルのインデックスとして使用されるため、クエリがより高速になる(たとえ単なる用語であっても)ので、パフォーマンスの問題のほうが多いと思います。
Bainternet、

@Bainternet私のA.の終わりを見てくださいEXPLAINと言うがterm_id
カイザー

1
痕跡だと思います。Tracでチケットをログに記録する:core.trac.wordpress.org/ticket/20536
Tom Auger

回答:


3

これに対するチケットをtracで記録しました:http : //core.trac.wordpress.org/ticket/20536

ただし、WordPressには現在(2.x以降)同じ名前の2つの用語を同じterm_idに関連付けるバグがあるため、当面は必要であることが判明しています!したがって、1つの用語が複数の分類法に関連付けられる可能性があります(正しくはありません)。このバグを参照してください:http : //core.trac.wordpress.org/ticket/5809

それはかなり広範囲にわたるので、修正の実装は非常に徹底的にユニットテストする必要があります。何か進展があった場合は、この質問を忘れずに更新するようにします。


これは間違いなくケースです!このバグは、大規模な(数百の)マルチサイトインストールで私に噛み付きました...非常に奇妙です。さらに、バグは5年前のものであることに注意してください...ただし、パッチは3.6リリースに含まれる予定なので、実際に修正される可能性があります。(ついに!:))
rinogo 2013年

この質問を更新して正解を選択していただきありがとうございます、トム!うまくいけば、これが将来この問題に取り組む人々を助けるでしょう。回答/リンクをありがとう。非常に役立ちます。
rinogo 2013年

1
この質問を更新するよう通知します -ところで、エイリアスという用語はありませんでしたか?
カイザー2013

@kaiserさん、こんにちは。言及されているTracの問題の解決に向けて、これ以上前向きな動きがあったかどうかはわかりません。
トム・オージェ

現在、そのターゲットは3.7-earlyに設定されています。しばらく様子を見てみましょう。何が欠けている?私が読んだものからユニットテストがあったので、最後に完全にフォローできませんでした。
カイザー2013

1

なぜ分類法も必要なのですか?1つの用語レコードを複数の分類法のメンバーにすることはできますか?

いいえ。用語には用語アーカイブをサポートするスラッグがあります。また、スラッグを2回持つと、いくつかのパーマリンクシナリオで多くのマイントラップまたは「不変」が発生します。

これが望ましいと思われるユースケースはありますか?

はい:あなたは例えばのための条件を持っていることを想像sizeしてという名前の3つの分類法を持っているlengthwidthheight(あなたはまた、色について考えることができます)。しかし、上記の理由により、これはサポートされていません。

一般に、WPコアにあるものには理由があります。term_idを用語の主キーにできない理由を理解しようとしています-なぜ分類も必要なのですか?

テーブルを見て、を実行することからEXPLAINterm_id 主キーになります。大規模なシステムでは、(遅い)結合を使用して分類法固有の用語のみをクエリする方が、すべてをクエリし、並べ替えて、必要なものをフィルター処理するよりも速いと思います。


物事の音から、それはエラーになっている(おそらく前のスキーマから残っている)か、または重複したスラッグを持つことが許可される可能性がある将来のケースのためにあります(そうではない)。いずれにせよ、あなたが私の質問に答えたかどうかはわかりません。
Tom Auger、2011

@TomAuger「これが望ましいと思われるユースケースはありますか」:はい。しかし、逆の方が重要です。税Aの用語は、税Bの用語と同じ名前を持つことができますが、たとえば、異なる意味を持つことができます。したがって、分類の「重要度」と「送料」で「重量」を照会している場合、「本当に重い」とはどうなるでしょうか。
kaiser

はい。ただし、ここではNAMEという用語ではなく、IDという用語について説明しています。IDは、同じ名前を持つ可能性のある他の用語(分類法に関係なく)から用語を完全に明確にします。これはデータベースに関する質問ではなく、コアコードに残された理由についての詳細です。
トム・オージェ

@TomAuger 12月の終わりにこのQをフォローした方が簡単だったでしょう。今度はこれに再び取り組みます:/
kaiser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.