最近は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
バグなどあったらプルリク下さいー。
Comments
“RS CSV Importer Media Add-On 1.0.0 をリリースしました。” への6件のフィードバック
ありがとうございます。
なんとかこの記事に出会えて解決いたしました。
Really Simple CSV Importerで登録後、画像が出てこなく調べても解決に至らず(私の知識不足もあり。。。)
RS CSV Importer Media Add-Onを併用させていただき一瞬で解決に至りました。
分かり易く書いていただいたので感謝です。
お世話になります。
RS CSV Importer Media Add-Onを使わせていただいております。
大量のデータと画像(数千件ほど)を「Really Simple CSV Importer」と 「RS CSV Importer Media Add-On」を使用してカスタムフィールド(Advanced Custom Fields使用)にインポートさせたのですが、公開ページを見ると画像だけが表示されません。
※post_statusは「publish」、カスタムフィールドの画像の返り値は「画像URL」です。
ソースを見るとのように(%post_id%に1を+した値)となっており、
各ページの編集画面を開いて「更新」ボタンを押すと画像が正常に表示されますが、一括編集で「更新」を押しても表示されません。
件数が多いので、一件づつ開いて更新、というのも大変なので困っております。
また、「下書き」にしてインポートし、一括で公開も考えましたが、公開すると「公開日時」が変わってしまうため(変更したくない事情があり)post_statusは「publish」のままで作業したいと考えております。
何かヒントがあればご教授いただけると助かります。
どうぞよろしくお願いします。
プラグインに関する問い合わせは、WordPress のサポートフォーラム( https://ja.wordpress.org/support/ )がありますので、そちらでお願いします。
出力される数字は、アップロードされたメディアのIDかと思います。
ACFは内部で独自の形式で値を保存するためそのような状態になっているものと思われます。
なのでどこかのタイミングでACFの形式に保存し直す必要があります。https://www.advancedcustomfields.com/resources/update_field/
ご返信ありがとうございます。
ACFの形式に保存し直す方向で検討してみます。
ありがとうございました。
フォーラムにも投稿して頂いていたようですね。失礼しました。タグなどを付けておいて頂けると、こちらも気づきやすいです。
フォーラムにも返信いただきありがとうございました。
なんとかやってみます。