私は、米国の各州に与えられた情報のカテゴリに基づいてサイトを構築しています。state_data という分類法と、各州のカスタム投稿タイプを作成しました。州の投稿タイプは分類法を共有していますが、すべての州がすべての用語を取得するわけではありません。特定の州のみに関連するすべての用語をリストする方法を探しています。ネイティブの wp 関数 get_terms は、分類法のすべての用語を取得します。get_terms を post_type でフィルタリングする方法はありますか?
2 に答える
大丈夫です。状態を表す各 post_type にそれほど多くのエンティティがない場合。10個でOKです。1 つの post_type ですべてのエンティティをループし、wp_get_post_terms 結果のループを使用してすべての用語 ID を記録し、それを配列にマージできます。
私は SQL の経験がありませんが、データベースを見ると、カスタム SQL クエリで到達できる可能性があります。
ほら、特定のカスタム投稿タイプの各エンティティには一意の ID があります。あなたはできる
SELECT ID FROM wp_posts WHERE post_type = 'Alabama';
これで、アラバマ州のエンティティのすべての ID を取得できました。これらのエンティティに割り当てられたすべての用語を選択できるようになりました。
SELECT term_taxonomy_id FROM wp_term_relationship WHERE object_id IN ( *RESULT FROM PREVIOUS QUERY* );
これで、アラバマ州のすべてのエンティティに関連する term_taxonomy_ids が得られ、wp_term_taxonomy テーブルから取得できます。
SELECT term_id from wp_term_taxonomy WHERE term_taxonomy_id in ( *RESULT FROM PREVIOUS QUERY* );
最後に、wp_terms からすべての用語を取得するか、PHP 関数でそれらをクエリできます。私が言ったように。私は SQL の専門家ではないので、これを 1 つの SQL クエリでまとめることはできませんが、PHP の助けを借りてすべてをまとめることはそれほど複雑ではありません。しかし、重要なのは効率だと思います...