最近はconcrete5でおなじみの菱川さんが作った、Really Simple CSV Importerというプラグインがありまして。よくお世話になってます。
この間、画像データを投稿に紐付ける必要がありまして。
出来れば画像はWordPressのメディアとして管理して、カスタムフィールドに画像のIDを突っ込めればなー。カスタムフィールドにURL突っ込めばダウンロードしてこれないかなーって要件がありましてた。
ということで、Really Simple CSV Importerのアドオンプラグインを作りました。
RS CSV Importer Media Add-Onというまんまな名前のプラグインです。
一昨年くらいにフォークしてその機能をつけたりしてたのですが、URLをそのまま使いたいこともあったりで、アドオンにしておいた方がいろいろ便利だなと言うことで。
使い方
Really Simple CSV Importerをインストールして有効化した後、RS CSV Importer Media Add-Onをインストールして有効化して下さい。
その後はReally Simple CSV Importerの使い方と一緒です。カスタムフィールドの欄に画像などWordPressのメディアとして扱えるファイルのURLが存在した場合、ダウンロードして記事のカスタムフィールドの値をメディアのIDに変更します。
CSVのサンプルはこちらを参考にして下さい。https://github.com/torounit/rs-csv-importer-media-addon/blob/master/sample/linux.csv
IDにして保存するので、モンキーレンチのキタジマさんのSmart Custom Fieldsとも相性が良かったりします。
インポートするファイルの拡張子の設定
really_simple_csv_importer_media_ext2type
というフィルターフックを作りました。
これにフックすると、インポートするファイルの拡張子を変更することが出来ます。これで、画像はダウンロードするけどPDFへのURLはそのまま、みたいなことも出来るようになってます。
Sample Code
add_filter('really_simple_csv_importer_media_ext2type', 'really_simple_csv_importer_media_ext2type'); function really_simple_csv_importer_media_ext2type( $types ) { return array( 'image' => array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' ), 'audio' => array( 'mp3', 'ogg', 'wav', 'wma' ), 'video' => array( 'mov', 'mp4', 'mpeg', 'mpg', 'ogm', 'ogv', 'wmv' ), 'document' => array( 'doc', 'docx', 'odt', 'pages', 'pdf', 'psd' ), 'spreadsheet' => array( 'ods', 'xls', 'xlsx' ), 'interactive' => array( 'swf', 'key', 'ppt', 'pptx', 'odp' ), 'text' => array( 'asc', 'csv', 'tsv', 'txt' ), 'archive' => array( 'dmg', 'gz', 'rar', 'tar', 'tgz', 'zip'), 'code' => array( 'css', 'htm', 'html', 'php', 'js' ), ); }
使い方wp_ext2type
へのフックと変わらないです。というか内部的にはこれ使ってます。なのでデフォルトでは、wp_ext2typeが許可しているモノを全て許可します。svgなどWordPressがアップロードを許可してないモノはまた別に設定が必要です。WordPressの管理画面からアップロード可能なモノのみ受け付けます。
レポジトリ
Github: https://github.com/torounit/rs-csv-importer-media-addon
バグなどあったらプルリク下さいー。