CSVを用意してwordpressにアップロードして投稿するまでの一連の流れ

本日ひっかかったところ

  • csvをphpで読み込むことはできるが、どのようにしてアップロードしていくのかわからない
  • wordpress内のフォルダ構造がよくわからないし多すぎる
  • どこにコードを書いていくのかわからない

本日の内容

なので本日の内容はcsvをアップロードする際に

  1. どこに書くのか
  2. どう書くのか
  3. アップロードされたことの確認方法

に注目していきたい。

前提:

大前提:もうすでにwordpressの環境ができあがっていること。

使ったCSV File:

使ったcsv fileはこちらからダウンロードできるはず。

ffield_sample

ダウンロードできない場合はこのスクショの内容をcsvにしてください。。。

使ったカスタムフィールド

こちらのカスタムフィールドはwordpressのプラグインで入力したもの。

[rent]
label = 賃料(必須)
type = textfield
size = 20
class = number required
after = 円

[square_meters]
label = 専有面積(必須)
type = textfield
size = 20
class = number required
after = m²

1. どこに書いていくのか?

答えはwordpressのwp-adminでいいっぽい。(ちなみに wordpress/wp-content/themes/{自分のテーマ}/functions.php に作っている人も見かけたが、自分はエラーを吐かれたので断念)

{wordpressのあるディレクトリ}/wordpress/wp-admin に行き、csvをuploadするためのディレクトリを作り、アップロードするためのphp fileをtouchコマンドで作る

# terminalにて
# {wordpressのあるディレクトリ}/wordpress/wp-admin
$ mkdir load_csv
$ cd load_csv
# {wordpressのあるディレクトリ}/wordpress/wp-admin/load_csv
# アップロードするためのphp fileをtouchコマンドで作る
$ touch upload.php
$ code .
# {wordpressのあるディレクトリ}/wordpress/wp-admin/load_csv/upload.php を編集開始!

2. どう書いていくのか?

upload.php の内容は以下

# {wordpressのあるディレクトリ}/wordpress/wp-admin/load_csv/upload.php

<?php
require('../../wp-blog-header.php');
$file = new SplFileObject('ffield_sample.csv');
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $line) {
    $records[] = $line;
}

for ($i=1 ; $i<count($records);$i++){
    var_dump($records[$i][2]);

    $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, 'square_meters',$records[$i][2] == null ? 0 : $records[$i][2]);
        update_post_meta($insert_id, 'rent',$records[$i][1] == null ? 0 : $records[$i][1]);
        var_dump('Successfully Uploaded!');
    }
    else{
        var_dump('Error. Insert Id was Zero.');
    }
}
?>

3. アップロードされたことの確認方法

wordpressのサーバが立ち上がっている状態で

http://{自分の名前}.local/wp-admin/load_csv/upload.php

を読み込むと、phpファイルの結果が以下のように現れる。

そして

http://{自分の名前}.local/wp-admin/edit.php

を確認するとたしかに2つとも1-Draft, 2-Draftとして出ている!

最後に

ちどうしてこのような構造になっているかはなんとなくわかってきたが、裏で何が起こっているのかについては氷山の一角しか理解できていないと感じた。

参考になったウェブサイトは以下

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

https://hacknote.jp/archives/40333/

  • 記事を作成し、カスタムフィールドにcsvの配列を書き込む

https://hacknote.jp/archives/24405/

  • wordpress内のフォルダ構造について

https://www.webdesignleaves.com/pr/wp/wp_folder_structure.html