【WordPress】購読者のユーザーにwp_insert_postでカスタムタクソノミーを付けて投稿させる
ちょいハマったのでメモです。
wp_insert_postのやつ
wp_insert_postを使ってユーザーに投稿をさせるやつをやりました。
関数リファレンス/wp insert post – WordPress Codex 日本語版codexに沿ってtax_inputにカスタムタクソノミーとタームをセットして投稿させるようにしたところ、購読者権限ユーザーでは投稿はできるけどタクソノミーはセットされないということが分かりました。
解決法
ユーザー権限を変更
ユーザー権限を購読者以上にすれば不具合はないので、それで問題がなければ一番手っ取り早そう。
でも管理画面にアクセスできたりとか、不要な権限も付いてきちゃうので、そういうのがダメな案件の場合は、そういうのがダメであるためダメですね。
wp_set_object_termsで設定する
なんだか購読者権限のユーザー権限の方をいじる方法もありそうな気配も感じますが、もう少し気軽にできぬかということで探したところwp_set_object_termsを使ったら幸せになれました。
PHP
// スラッグを作成
$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 );
幸あれ。
広告
次の記事(2017/03/06)
参考になったサイトまとめ 2017/02
前の記事(2017/02/13)
WordBench大阪 「WordPress利用時のサーバー選びとローカル環境のお話」に参加しました