WordPressで記事を増やす時は「投稿」→「新規追加」からタイトルや本文などを入力していくと思います。
ブログを書く時はそのやり方だと思いますが、情報サイトなどブログの形と異なる場合は自動で投稿したいという場合もあると思います。
その場合はプログラムのコードを書く必要があります。実際に私がそれを必要とする状況だったので、コードを作ってみました。
単純に記事を1つ増やすだけでなく、カスタムフィールドに必要なデータも合わせて登録する方法を紹介します。
Here be Elephpants! / Sara Golemon
このページの目次
プログラムで投稿するコード
もちろんコードはPHPです。まずはコードを見ましょう。
//引数設定 $post_value = array( 'post_author' => 1, // 投稿者ID 'post_title' => 'テストタイトル', // 投稿タイトル 'post_content' => '本文あいうえお', // 本文 'post_name' => 'testtitle', // スラッグ 'post_status' => 'draft' // 公開ステータス ); //投稿の追加 $insert_id = wp_insert_post($post_value); if($insert_id) { // 投稿に成功した時の処理 update_post_meta($insert_id, 'hogehoge', 'ほげほげ'); update_post_meta($insert_id, 'product_id', '1'); update_post_meta($insert_id, 'price', '2,000'); } else { // 投稿に失敗した時の処理 }
上から順番に解説します。
最初にpost_valueという名前の変数に投稿情報を設定します。記事タイトルは「post_title」、記事本文は「post_content」です。ここでは5つ設定しましたが、他にも自由に設定できます。
参考:「関数リファレンス/wp insert post」
post_titleやpost_contentという名前はMySQL上のwp_postsテーブルの列の名前です。
次にwp_insert_post関数で記事を追加します。引数に上で設定した投稿情報を入れてやります。wp_insert_post関数を実行すると、投稿IDが戻り値として返ってきます。それを上のコードでは「$insert_id」としています。
投稿ができれば、次はカスタムフィールドの設定です。「if($insert_id) {」は、wp_insert_post関数が成功しているかどうかを判定しています。成功していれば、$insert_idに何らかの値が入っています。
カスタムフィールドの設定はupdate_post_meta関数で実行します。見た感じ更新しかされないように感じますけど、まだ登録していないのであれば、登録処理に切り替わります。便利ですね。
参考:「関数リファレンス/update post meta」
上のコードでは「hogehoge」「product_id」「price」という名前のカスタムフィールド名に「ほげほげ」「1」「2,000」という値をそれぞれ設定しました。
商品データの投入に使えるかも?
初めてこのようなコードを書いてみて思ったこと。
この方法は割と汎用的に使えるのではないかと思いました。
上に書いたコードを繰り返しすることで、例えば商品データの投入を自動化することができます。
商品データに限らず、データを入力していくような形のサイトであれば、この手法を応用することでかなり幅が広がるのではないでしょうか。
私はこの方法を知ったおかげで、いろいろな可能性が出てきたと感じています。知れば知るほど面白いです。WordPress。