【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 );
    

    幸あれ。

    • このエントリーをはてなブックマークに追加
    広告
    野良人 代表
    新免祥太
    1988年岡山生まれ。外食企業のWEB・EC担当を経験したのち、2013年12月より「野良人(のらんど)」の屋号で独立しWEBデザイン・プログラミングなどWEBサイト制作の工程全般を請け負っています。お気軽にご相談ください。
    <次の記事(2017/03/06)
    参考になったサイトまとめ 2017/02
    前の記事>(2017/02/13)
    WordBench大阪 「WordPress利用時のサーバー選びとローカル環境のお話」に参加しました
    記事一覧