WordPressでwp_insert_post()を使って記事データを一括投稿する方法

WordPressでwp_insert_post()を使って記事データを一括投稿する方法

Photo Andreas Rønningen via Unsplash

WordPressで記事データを一括投稿するにはいくつか方法があります。

まず思いつくのはSQLでデータベースに直接投稿する方法です。しかし、WordPressの投稿データは複数のテーブルに分かれているため、更新するテーブルが多岐にわたり、それなりに面倒な作業になります。

プラグインを使った方法としては「WP All Import」などが有名ですが、一部機能が有料だったり、柔軟性に欠けます。

そこで、覚えておきたいのが、WordPressの関数wp_insert_post()を使う方法です。

WordPressには記事データ投稿用の関数wp_insert_post()が用意されており、この関数を使うことで簡単に記事データの一括投稿が可能になります。

WordPress中級者以上の方は、wp_insert_post()を使った記事データの一括投稿を覚えておくと、大量の記事データを投稿したり、サイトを移転、統合するときに便利です。

WordPress一括操作系の便利テクニック

WordPressでカテゴリーやタグ、カスタムタクソノミーを一括インポートできる便利なプラグイン「WP Taxonomy Import」の使い方
WordPressでカテゴリーやタグ、カスタムタクソノミーを一括インポートできる便利なプラグイン「WP Taxonomy Import」の使い方
WordPressで複数の記事のカテゴリを一括で外すことができるプラグイン「Batch Cat」の使い方
WordPressで複数の記事のカテゴリを一括で外すことができるプラグイン「Batch Cat」の使い方
WordPressの記事本文やタイトルの一括置換ができるプラグイン Search Regex
WordPressの記事本文やタイトルの一括置換ができるプラグイン Search Regex
テーブル単位でテキストを一括置換できるWordPressプラグイン Better Search Replace
テーブル単位でテキストを一括置換できるWordPressプラグイン Better Search Replace
WordPressでよく使うプラグインを一括インストールできる WPCore
WordPressでよく使うプラグインを一括インストールできる WPCore
スポンサーリンク

WordPressでwp_insert_post()を使って記事データを一括投稿する方法

記事データは下記のような配列で用意します。postmetaはカスタムフィールドを使用している場合などに設定します。

PHPファイル全体は下記のようになります。

記事データ「$posts_data」ごとに展開し、wp_insert_post()関数で記事データを作成し、update_post_meta()関数で作成した記事のpostmetaをセットします。

上記のPHPファイルを、WordPressをインストールしているディレクトリにアップロードします。アップロードしたURLにアクセスすると、記事データの投稿が実行されます。投稿に成功した場合は「1件目の記事データの作成に成功しました。 記事タイトル 2017-05-11 18:16:09」のようなメッセージが表示されます。

先頭のrequire_once( dirname( __FILE__ ) . '/wp-load.php' );でWordPress関数を使う準備をしています。

set_time_limit(0);」を設定しておかないと、件数が多い場合に(感覚的には2000件以上)、途中で記事のインサートが止まってしまうことがあります。

$post_author」には投稿者のユーザーIDを設定します。

$date」で投稿日時を記事ごとに1秒ずつずらしています。投稿日時が重複してしまうと、記事を一覧表示した時の並び順やページネーションがおかしくなることがあるためです。

※投稿日時を1秒ずつ未来にして記事を登録するため、記事数が多いと一部の記事は「予約投稿」状態になります。時間が過ぎても予約投稿が上手く動作しない場合は、SQLでデータベースの投稿ステータスを直接「公開」状態に変更してしまいます。

SELECT文で「投稿状態(post_status)」が「予約投稿(future)」の記事を一覧表示します。

UPDATE文で「投稿状態(post_status)」の「予約投稿(future)」を「公開(publish)」に変更します。

WordPressの公式リファレンスではより細かなオプションも紹介されています。wp_insert_post()を使いこなせると、かなりの時間の節約になるので、大量の記事データを投稿するときは試してみてください。

 参考

スポンサーリンク

人気の記事

コメントを投稿する

  • Posted on 2017.05.11
  • Views 172