読み込んだcsvをwordpressに投稿してDB化する

同ディレクトリにあるcsv(下の例だとmicrobrew.csv)を読み込み配列化する。

$csv  = array();
$file = 'microbrew.csv';
$fp   = fopen($file, "r");

while (($data = fgetcsv($fp, 0, ",")) !== FALSE) {
  $csv[] = $data;
}
fclose($fp);

wp-blog-header.php を読み込んでおくと、wp_insert_postやupdate_post_metaなどの、wordpressの関数がつかえるようになる。相対パスは今実行しているphpの場所によって変える。

require('../wp-blog-header.php');
for ($i=1 ; $i<count($csv) ; $i++){
    $post_value = array(
        'post_title' => $csv[$i][0],// 投稿タイトル
        'post_content' => '[cft format=0]', // 本文
   );

   $insert_id = wp_insert_post($post_value); 

   if($insert_id != 0) {
        update_post_meta($insert_id, 'pronunciation', $csv[$i][1] ); // キーが「pronunciation」のカスタムフィールドの値に「$csv[$i][1]」を投稿
        update_post_meta($insert_id, 'maker', $csv[$i][5]); 
        update_post_meta($insert_id, 'address', $csv[$i][7] );
        update_post_meta($insert_id, 'url', $csv[$i][15] ); 
     }
}

wp_insert_postは、引数として投稿のタイトルなどのパラメータを要素とする配列をとる。そして投稿がされる。返す値は記事のIDなので$insert_id は投稿のIDが帰るが、投稿に失敗したら0が帰る。 wp_insert_postの引数に、とれるのはwp-postのフィールド名に限るので、その他の情報はカスタムフィールドとして登録する。 一度投稿してから、update_post_metaによって指定のIDの投稿にカスタムフィールドを追加して上書きするという形をとった。