説明
wp_set_object_terms() は、オブジェクト(投稿など)にタームを紐付ける関数です。
基本構文
wp_set_object_terms( int $object_id, string|int|array $terms, string $taxonomy, bool $append = false ): array|WP_Error
引数
$object_id:投稿などのID$terms:ターム$taxonomy:タクソノミー名$append:追加するか置き換えるか
戻り値
ターム関連IDの配列。
使い方(サンプル)
wp_set_object_terms( 123, 'rock', 'genre', true );
注意点
- 存在しないタームは新規作成されます(権限に注意)。
- 階層型ではIDを渡さないと、同名の新規タームができることがあります。
実務での使いどころ
- 投稿に、タームを設定する(置き換え、または追加)、基本の関数。
- 投稿以外の、タームを持つオブジェクトにも使うとき。
よくあるミスと対処
$appendを指定せず、既存のタームがすべて置き換わる。- タームのIDを、文字列(
'5')で渡している。数値の文字列は、ターム名として扱われ、新しいタームが作られる。IDは、整数で渡す。 - 階層ありのタクソノミーに、ターム名を渡している。
NG例
wp_set_object_terms( $post_id, '5', 'category' ); // '5' という名前のタームが作られる
OK例
wp_set_object_terms( $post_id, array( 5 ), 'category', true ); // IDを整数で渡し、追加する
使い分け早見表
| 関数 | 役割 |
|---|---|
wp_set_object_terms() |
タームを設定する(置き換え、または追加) |
wp_remove_object_terms() |
タームを外す |
wp_set_post_terms() |
投稿向けの、設定の関数 |
関連項目
wp_set_post_terms()、wp_remove_object_terms()
公式リファレンス:wp_set_object_terms() | Function | WordPress Developer Resources

コメント