http://usename.local/wp-admin にディレクトリ(ここではload_csvとする)を作成しそのディレクトリ内にcsvファイルを自動投稿するプログラムを書き込むphpファイル(ここではupload.phpとする)と自動投稿したいデータを格納したcsvファイル(ここではdata.csvとする)を保存する。
http://usename.local/wp-admin/load_csv/upload.php http://usename.local/wp-admin/load_csv/data.csv が新たに追加される。
upload.phpには同一階層にあるdata.csvからデータを読み込みwordpressのカスタムフィールドに投稿するプログラムを書き込む
例:
<?php require('../../wp-blog-header.php'); $file = new SplFileObject('data.csv'); $file->setFlags(SplFileObject::READ_CSV); foreach ($file as $line) { $records[] = $line; } for ($i=1 ; $i<count($records);$i++){ var_dump($records[$i][0]); $post_value = array( 'post_title' => $records[$i][0], //post title 'post_content' => '[cft format=0]', //post content ); $insert_id = wp_insert_post($post_value); if( $insert_id != 0 ){ update_post_meta($insert_id, 'data1',$records[$i][0]); update_post_meta($insert_id, 'data2',$records[$i][2] == null ? 0 : $records[$i][2]); update_post_meta($insert_id, 'data3',$records[$i][3] == null ? 0 : $records[$i][3]); var_dump('Successfully Uploaded!'); } else{ var_dump('Error. Insert Id was Zero.'); } } ?>
ここでcsvファイルの読み込みにはSplFileObject::fgetcsvではなく、実行速度の早いSplFileObject::READ_CSVを用いる。
またCSVファイル内に空の要素(null)がある場合、三項演算子で
$records[$i][2] == null ? 0 : $records[$i][2]
として0を格納するようにすることもできる。