ワイヤード・パンチ

元・大阪人が、岡山の山奥でも生きていけることを証明するためのブログ。

WordPressで投稿に対してカテゴリを関数から設定する方法。

WordPressでは、カスタム投稿タイプに追加したカテゴリ一覧のタクソノミー、そのタクソノミーの中に入れるカテゴリのことを、タームと呼ばれていたりします。

今回は、特定の投稿に対して、タームを設定することを関数でやる方法について。

広告

解決法。

wp_set_object_terms( $post_id, $terms, $taxonomy, $append );

関数リファレンス/wp set object terms – WordPress Codex 日本語版

今回はもう、ざっと使用例を紹介。

wp_set_object_terms(123, 456, "hoge");

引数は左から順に、投稿のID、タームのID、タクソノミーのスラッグとなります。

これを実行すれば、指定した投稿にタームを設定することができるでしょう。

上記の場合は、ID123の投稿に対して、タクソノミーがhogeの中にある、タームID456のタームが割り当てられた、ということになりますね。

wp_set_object_terms(123, "fuga", "hoge");

なお、タームのIDの代わりに、スラッグを入れることも可能です。

・○○県
 └中央区
・××県
 └中央区

ただし、上記のように別々の親カテゴリがあって、それぞれ同じ子カテゴリがあるとき、スラッグによる指定では、思ったとおりの結果にならないかもしれません。

同名のスラッグがある場合、自動的に末尾に番号が割り当てられるので、重複することはないものの、できればIDによる指定の方が確実でしょう。

余談。

ぶっちゃけ、調べたらすぐわかるような内容ではあるのですが、調べ方が悪かったのか、意外にもなかなかたどり着けませんでした。

wordpress 投稿 カテゴリ 設定 関数

上記の検索ワードでは、wp_set_object_termsについて出てきませんでした。

カテゴリもタームも、同じような意味だとは思うのですが、Wordpress的にはカテゴリというと、標準投稿タイプ(post)のものを指すのでしょう。

wordpress 投稿 ターム 設定 関数

カテゴリではなくタームと置き換えれば、今回のように、カスタム投稿タイプのことにたどり着けました。

そういえば、標準の投稿タイプに対しても、タクソノミーのことはタクソノミーでいいのでしょうか?

カテゴリの中のカテゴリとか、わけわかめな言い回しをしてしまう。