ノラWEB屋 野良人(のらんど)- 個人営業のWEB屋さん

【WordPress】購読者のユーザーにwp_insert_postでカスタムタクソノミーを付けて投稿させる

2017年2月18日

ちょいハマったのでメモです。

wp_insert_postのやつ

wp_insert_postを使ってユーザーに投稿をさせるやつをやりました。

関数リファレンス/wp insert post – WordPress Codex 日本語版

codexに沿ってtax_inputにカスタムタクソノミーとタームをセットして投稿させるようにしたところ、購読者権限ユーザーでは投稿はできるけどタクソノミーはセットされないということが分かりました。

解決法

ユーザー権限を変更

ユーザー権限を購読者以上にすれば不具合はないので、それで問題がなければ一番手っ取り早そう。

でも管理画面にアクセスできたりとか、不要な権限も付いてきちゃうので、そういうのがダメな案件の場合は、そういうのがダメであるためダメですね。

wp_set_object_termsで設定する

なんだか購読者権限のユーザー権限の方をいじる方法もありそうな気配も感じますが、もう少し気軽にできぬかということで探したところwp_set_object_termsを使ったら幸せになれました。

// スラッグを作成
$slug	= XXXXX(被らないようタイムスタンプとかで動的なものをアレする);

// 投稿を作成
wp_insert_post(
	array(
		'post_content'	=> '',
		'post_name'		=> $slug,
		'post_title'	=> $title,
		'post_type' 	=> $post_type,
		'tax_input'		=> array( $taxonomy	=> $term ), // これでは購読者権限ユーザーの場合ダメであった
	)
);

// スラッグから投稿のIDを取得
$post_info	= get_page_by_path( $slug, 'OBJECT', $post_type);
$post_id	= $post_info->ID;

// 投稿にタクソノミーとタームをナニする
wp_set_object_terms( $post_id, $term, $taxonomy );

幸あれ。

このエントリーをはてなブックマークに追加