2015/03/21
【WordPress】CSVをアップロードするプラグインを作ってみた
具体的に言うと、CSVをアップロードしてJSONに変換するプラグインで、
最終的にはフロントのJSで取得するというのを目的としたもの。
以下、WPのプラグインの作り方を含めて内容の説明。
1. WPのプラグインをつくる
用意する(した)ファイル
– csv.php // プログラムが書いてある
– data // 生成したJSONを入れるフォルダ
以上の2点。
これらを適当なフォルダの中に入れ、
wp-content/plugins/
に配置する。
今回は
wp-content/plugins/csvUploader
とした。
csv.phpの中身
1 2 3 4 5 6 | /* Plugin Name: CSVアップローダー Description: CSVをアップロードするプラグインです Plugin URI: / Author: sterfield */ |
行頭に上記を記述。
それだけでアイキャッチ画像のように、プラグインメニューに追加される。
次に左図の最下部のように、メニューに表示させるため、以下のコードを追記。
1 2 3 | function my_plugin_menu() { add_menu_page( 'CSVアップローダー', 'CSVアップローダー', 8, __FILE__, 'csvUploader' ); } |
これでプラグインの作成は完了。
2. ファイルをアップロードする処理
1 2 3 4 | <form method="post" action="" enctype="multipart/form-data"> <h3>CSVを選択してアップロードボタンを押してください</h3> <input type="file" name="csv" /> <input type="submit" value="アップロード"> </form> |
ファイルをアップロードするだけであればこれだけでOK。
1 2 3 4 5 6 7 8 9 10 | if( is_uploaded_file( $_FILES["csv"]["tmp_name"] ) ) { if ( pathinfo($_FILES["csv"]["name"], PATHINFO_EXTENSION) == "csv" ) { $tmp = fopen( $_FILES["csv"]["tmp_name"], "r" ); while( $csv[] = fgetcsv( $tmp, "1024" ) ){} mb_convert_variables ( "UTF-8", "SJIS-win", $csv ); fclose( $tmp ); } } |
今回はCSVを扱うので、fgetcsvで1行ずつ$csvの配列に格納する。
3. JSONに変換して保存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | if (isset( $csv ) ) { $data = array(); $i = 0; $ii = 0; foreach( $csv as $c ) { if ( is_array( $c ) ) { $ii = 0; $data[$i] = array(); foreach ( $c as $r ) { $data[$i][$ii] = $r; $ii++; } } $i++; } $file_name = dirname (__FILE__) . "/data/mediaList.json"; file_put_contents( $file_name, json_encode( $data ) ); echo "CSVをアップロードしました"; } |
$csvを$dataに好きな形式で整形して渡す。
その後json_encodeをして保存。
Author Profile
HOSHINO
ECのことを中心に書きたいと思います。 ネタが無いときはプログラムやデザインのことも書きます。
SHARE