Wたろ
WordPressで記事の自動投稿ってできるの?
こんな疑問を解決します。
本記事の内容
- 記事を投稿する関数 wp_insert_post の紹介
こんにちは、ワードプレスの開発にどっぷりハマっているタロです。
この記事をみている方は WordPress で「記事を自動投稿させてみたい!」と考えている方だと思います。
WordPress の wp_insert_post という関数を使うことでプログラム上で作成した記事を自動で投稿することができるので、その方法について紹介します。
プログラムによる自動投稿の例
実はこのブログでも自動投稿をさせています。
具体的には、Qiitaのトレンド記事を取得し表示するというプログラムを毎週1回実行しています。
wp_insert_post で自動投稿
オプション数が無数にあるため今回はQiita投稿を自動で行っている部分のオプションをまとめます。
$my_post = array(
'post_title' => 'タイトルを入力',
'post_content' => 'コンテンツを入力',
'post_name' => 'スラッグを入力',
'post_status' => 'publish', // 公開状態。下書きの場合は「draft」
'post_author' => 1, // 記事を書いた人
'post_category' => array(41) // カテゴリのID
);
// 新規投稿
wp_insert_post( $my_post );
上の実装をワードプレスのCronで定期的なジョブとして実行させています。
その他のオプションと詳細については下記のオプション説明と公式ドキュメントを参考にしてください。
$post = array(
'ID' => [ <投稿 ID> ] // 既存の投稿を更新する場合に指定。
'post_content' => [ <文字列> ] // 投稿の全文。
'post_name' => [ <文字列> ] // 投稿のスラッグ。
'post_title' => [ <文字列> ] // 投稿のタイトル。
'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | 登録済みカスタムステータス ] // 公開ステータス。デフォルトは 'draft'。
'post_type' => [ 'post' | 'page' | 'link' | 'nav_menu_item' | カスタム投稿タイプ ] // 投稿タイプ。デフォルトは 'post'。
'post_author' => [ <ユーザー ID> ] // 作成者のユーザー ID。デフォルトはログイン中のユーザーの ID。
'ping_status' => [ 'closed' | 'open' ] // 'open' ならピンバック・トラックバックを許可。デフォルトはオプション 'default_ping_status' の値。
'post_parent' => [ <投稿 ID> ] // 親投稿の ID。デフォルトは 0。
'menu_order' => [ <順序値> ] // 固定ページを追加する場合、メニュー内の並び順を指定。デフォルトは 0。
'to_ping' => // スペースまたは改行で区切った、ピンを打つ予定の URL のリスト。デフォルトは空文字列。
'pinged' => // スペースまたは改行で区切った、ピンを打った URL のリスト。デフォルトは空文字列。
'post_password' => [ <文字列> ] // 投稿パスワード。デフォルトは空文字列。
'guid' => // 普通はこれを指定せず WordPress に任せてください。
'post_content_filtered' => // 普通はこれを指定せず WordPress に任せてください。
'post_excerpt' => [ <文字列> ] // 投稿の抜粋。
'post_date' => [ Y-m-d H:i:s ] // 投稿の作成日時。
'post_date_gmt' => [ Y-m-d H:i:s ] // 投稿の作成日時(GMT)。
'comment_status' => [ 'closed' | 'open' ] // 'open' ならコメントを許可。デフォルトはオプション 'default_comment_status' の値、または 'closed'。
'post_category' => [ array(<カテゴリー ID>, ...) ] // 投稿カテゴリー。デフォルトは空(カテゴリーなし)。
'tags_input' => [ '<tag>, <tag>, ...' | array ] // 投稿タグ。デフォルトは空(タグなし)。
'tax_input' => [ array( <タクソノミー> => <array | string>, ...) ] // カスタムタクソノミーとターム。デフォルトは空。
'page_template' => [ <文字列> ] // テンプレートファイルの名前、例えば template.php 等。デフォルトは空。
);
まとめ
- 記事の投稿には wp_insert_post 関数を使う
- 自動投稿には wp_cron を使うのがおすすめ