wordpressにcsvファイルを読み込んで自動投稿する方法

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を格納するようにすることもできる。