同ディレクトリにある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の投稿にカスタムフィールドを追加して上書きするという形をとった。