私は与えられた投稿IDによって用語オブジェクトを取得したいです。私はsqlについてあまり知りません、そしてこのちょっと私にとって複雑です。これが私が試したものです:
global $wpdb;
$taxonomy = 'category'
$term= $wpdb->prefix.'terms';
$relations= $wpdb->prefix.'term_relationships';
$taxo = $wpdb->prefix.'term_taxonomy';
$sql = "SELECT $term.*, $relations.*, $taxo.*
FROM $term
JOIN $relations
ON $term.term_id = '$taxo.term_id'
JOIN $taxo
ON $relations.term_taxonomy_id = $taxo.term_taxonomy_id
WHERE $taxo.taxonomy = '$taxonomy' AND $relations.object_id IN (116,118)
GROUP BY $term.term_id";
$values = $wpdb->get_results($sql, ARRAY_A);
何が悪いのかわからない。うまくいかない。
Wordpressにすでに機能を果たす機能がある場合は、カスタムSQLクエリを利用することはお勧めできません。
これを達成するために、あなたは単に wp_get_object_terms()
を利用することができます。最初のパラメータ$object_ids
は、文字列またはオブジェクトIDの配列を取ります。あなたのケースでは、あなたはあなたの投稿IDの配列を利用することができます。これは与えられた投稿に関連するすべての用語を検索します。
これが例です
$terms = wp_get_object_terms( array(394,530), 'category' );
if ( ! empty( $terms ) ) {
if ( ! is_wp_error( $terms ) ) {
foreach( $terms as $term ) {
?><pre><?php var_dump($term); ?></pre><?php
}
}
}
これにより、次のような出力が得られます。
object(stdClass)#494 (10) {
["term_id"]=>
int(115)
["name"]=>
string(8) "child-01"
["slug"]=>
string(7) "child01"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(115)
["taxonomy"]=>
string(8) "category"
["description"]=>
string(0) ""
["parent"]=>
int(21)
["count"]=>
int(2)
["filter"]=>
string(3) "raw"
}