へっぽこコーダーの備忘録

phpやらjavascriptやら、使った技術をすぐに忘れちゃうから、おぼえがき程度に書いていきまーす
2015.02.26

wordpressで、コードをつかって、自動で投稿を追加、更新、削除する方法☆

以前、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つのコードの使い方でしたが、詳しくは下記のリファレンスから確認できますよ。

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