WordPressで管理画面外から投稿を追加するwp_insert_post()と、編集するwp_update_post()、削除するwp_delete_post()

WordPressでWEBサービスやら、会員制サイトなんかを作りたいとき、やっぱり管理画面を見せたくないシーンがあると思います。そんなときに重宝するのが、wp_insert_post()とwp_update_post()、wp_delete_post()です。

投稿を追加編集削除というよりは、データベースのthe_postsテーブルをそのまま触っているイメージの方があっている気がします。
引数にデータ―ベースのフィールド名をキーとした配列を取るので、変数に困ったらデーターベースを覗いてみるのも良いかもしれませんね。後学のためにも。

こんな感じで使います。
[php]
//投稿
$post_id = wp_insert_post( array(
‘post_author’ => $user_id,
‘post_title’ => $post_title,
‘post_content’ => $post_content,
‘post_status’ => ‘publish’
) );

//画像を投稿サムネイルに。
set_post_thumbnail( $post_id, $post_photo_id);

//画像に投稿を関連づける
wp_update_post( array(‘ID’ =>$post_photo_id,’post_parent’ => $post_id ) );
[/php]

画像などのメディアも投稿として管理されているので、wp_update_post()でいじくる事ができます。
コレをページテンプレートに組み合わせることで、管理画面外から投稿の追加・編集ができるページを作成することができます。

ただ、当然のことながら、セキュリティにはかなり気を遣わないといけない事になりますね。
PHPのhtmlspecialchars()や、WordPressのattribute_escape()等の文字列のエスケープや、wp_nonce_field()・check_admin_referer()でフォームからの投稿かどうかをちゃんとチェックする等はやっぱり最低限やっておきたいですね。