自分で作っているサイトで、バッチ処理を組んでWordPressのカスタム投稿を追加したいと思っていました。
やり方を調べていて、少し迷ったところがありました。
カスタム分類を設定するには?
カスタム投稿を追加するには、WordPressのwp_insert_post関数を使えば投稿を追加できます。
しかし、普通の投稿でいうカテゴリ(カスタム分類)を設定する方法がうまくいきませんでした。最初はこんな感じで設定しようとしていました。
$post_value = array( 'post_title' => 'タイトル', // 投稿のタイトル 'post_type' => '自分で決めた投稿タイプ', // 投稿タイプ 'post_content' => '本文あいうえお', // 投稿の本文 'post_category' => カスタム分類のID, // カテゴリ 'post_status' => 'draft' // 公開ステータス ); $insert_id = wp_insert_post($post_value);
これで動かしてみたところ、カスタム分類に何も設定されていませんでした。何でかと思い、調べてみたら違うことが分かりました。
正しくは、wp_set_object_termsという関数を使います。wp_set_object_termsについてはCodexもしくはWordPress私的マニュアルに詳しく記載されています。
動いたコードを書いてみると以下のようになります。
$post_value = array( 'post_title' => 'タイトル', // 投稿のタイトル 'post_type' => '自分で決めた投稿タイプ', // 投稿タイプ 'post_content' => '本文あいうえお', // 投稿の本文 'post_status' => 'draft' // 公開ステータス ); $insert_id = wp_insert_post($post_value); if($insert_id) { wp_set_object_terms($insert_id, 'カスタム分類として登録している名前', 'area'); }
areaの部分はカスタム分類名です。ここを自分のカスタム分類に変更してくださいね。
上記のコードで私は「カスタム分類として登録している名前」のところに都道府県名を登録しています。なので「兵庫県」とかが入ってくる感じですね。
wp_set_object_termsは今回初めて知りました。また知らないことを1つ知れて良かったです。