以前、wordpressで、スクレイピングしたHTMLをそのまま投稿ページとして自動登録するという作業を行いましたが、すっかりやり方を忘れてしまっていたので、関連コードと共に載せておきます。
コードは以下の3種類ですね☆
追加:wp_insert_post()
更新:wp_update_post()
削除:wp_delete_post()
詳しく見ていきましょうー。
■追加
コード:wp_insert_post($post)
引数の「$post」は配列になります。
下の配列要素から必要なものを選んで使用します。
$post = array(
‘ID’ => [ <投稿 ID> ] // 既存の投稿を更新する場合。
‘menu_order’ => [ <順序値> ] // 追加する投稿が固定ページの場合、ページの並び順を番号で指定できます。
‘comment_status’ => [ ‘closed’ | ‘open’ ] // ‘closed’ はコメントを閉じます。
‘ping_status’ => [ ‘closed’ | ‘open’ ] // ‘closed’ はピンバック/トラックバックをオフにします。
‘pinged’ => [ ? ] // ピンバック済。
‘post_author’ => [ <user ID> ] // 作成者のユーザー ID。
‘post_category’ => [ array(<カテゴリー ID>, <…>) ] // カテゴリーを追加。
‘post_content’ => [ <投稿の本文> ] // 投稿の全文。
‘post_date’ => [ Y-m-d H:i:s ] // 投稿の作成日時。
‘post_date_gmt‘ => [ Y-m-d H:i:s ] // 投稿の作成日時(GMT)。
‘post_excerpt’ => [ <抜粋> ] // 投稿の抜粋。
‘post_name’ => [ <スラッグ名> ] // 投稿スラッグ。
‘post_parent’ => [ <投稿 ID> ] // 親投稿の ID。
‘post_password’ => [ <投稿パスワード> ] // 投稿の閲覧時にパスワードが必要になります。
‘post_status’ => [ ‘draft’ | ‘publish’ | ‘pending’| ‘future’ ] // 公開ステータス。
‘post_title’ => [ <タイトル> ] // 投稿のタイトル。
‘post_type’ => [ ‘post’ | ‘page’ ] // 投稿タイプ名。
‘tags_input’ => [ ‘<タグ>, <タグ>, <…>’ ] // 投稿タグ。
‘to_ping‘ => [ ? ] //?
);
私の場合は以下の書き方で使いました。
$post = array();
$post[‘post_name’] = ‘投稿のスラッグ’;
$post[‘post_title’] = ‘投稿のタイトル’;
$post[‘post_status’] = ‘publish’;
$post[‘post_author’] = 1;
$post[‘post_category’] = array(3);//数字はカテゴリのID
wp_insert_post( $post );
これで一応指定した名前の投稿が登録できました。
上ではコンテンツの内容を入れてないけど、コンテンツは上の記述に以下を加える感じで。
$post[‘post_content’] = ‘コンテンツ内容(HTMLもOK)’;
■更新
コード:wp_update_post($post)
こちらも引数の「$post」は配列になります。
こちらのコードは私は使ってはいませんが、「$post」で指定する要素は、ほぼwp_insert_post()と同じだと思います(違うかったらすいません)。
ただ、1点違うのは、以下のように更新対象の投稿のIDを指定してやる必要があります。
$post[‘ID’] = 37;
あとは、wp_insert_post()と同様に、配列の要素ごとに、更新部分の内容を書き換えて
wp_update_post( $post )
で実行してやればOKでしょう。
■削除
コード:wp_delete_post($id, $force_delete)
こちらは単純に$idに削除する投稿のIDを入れるだけのようですね。
$force_deleteには「true」と「false」が指定できるよう。
$force_deleteは「true」だと「ゴミ箱にいれずに完全削除」、「false」だと「ゴミ箱行き」です。
私は、完全削除をしたかったので、以下のように使いました。
wp_delete_post(56, true);
以上、3つのコードの使い方でしたが、詳しくは下記のリファレンスから確認できますよ。