wp_insert_postでカスタム投稿追加時に、カスタム分類を設定する方法

スポンサーリンク

自分で作っているサイトで、バッチ処理を組んでWordPressのカスタム投稿を追加したいと思っていました。

やり方を調べていて、少し迷ったところがありました。

WordPress Logo
WordPress Logo / Phil Oakley

カスタム分類を設定するには?

カスタム投稿を追加するには、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つ知れて良かったです。