質問: ### 前提・実現したいこと Welcart+DLSeller(デジタルコンテンツ販売用のプラグイン)を利用して デジタルデータのダウンロード販売サイトを運営しております。 商品登録を、次の手順で行っております。 1.) WordPressのwp-content/uploadsフォルダに直接デジタルデータをアップロード 2.) Media from FTP Add On Commandlineを使ったシェルスクリプトをcronで自動実行させており、 WordPressにメディア登録されていないデジタルデータをメディア登録 3.) 管理画面 [Welcart Shop] - [商品マスター]にアクセス 4.) 操作フィールドの「商品一括登録」ボタンをクリック 5.) 商品一括登録用CSVを作成 (シェルスクリプトで一括作成) 6.) 事前に作成しておいた商品一括登録用CSVをアップロード しかし、 短い間隔で多数の商品を登録するため、 上記手順3.)〜6.)にかかる担当者の工数が無視できなくなってきました。 そこでこの手順を少しでも簡略化したいと考えております。 Welcart オンライン・マニュアル|ECサイト構築プラグイン > 管理画面マニュアル > 商品マスター この一連の処理をGUIの操作ではなく、シェルスクリプトで実行したいのです。 ### 試してみたこと 事前準備として、送品一括登録用CSVをサーバ上に作成しておきます。(手順5.) 手順3,4,6)をcURLを使うことで実現できるのでは・・・と期待したのですが 思うような動作になっておりません。 ``` $ curl --data 'log=(WORDPRESSユーザID)&pwd=(WordPressユーザパスワード)' https://(ドメイン名)/wp-login.php -c ./cookie.txt $ curl -X POST -F "usces_upcsv=@./usces_item_list.csv" -F upload_mode=all -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' --include ``` (参考にしたURL) Welcart 商品一括登録(csv)をcronによる自動起動で実行する | クラウドロジスティクス ログインは成功しているようなのですが、 その後のPOSTが上手く動作しておりません。 商品一括登録用CSV(usces_item_list.csv)はWordPressの「wp-uploads」フォルダに アップロードされていることは確認できています。 以下レスポンスがありました。 (レスポンス) > > HTTP/1.1 100 Continue > > > HTTP/1.1 302 Found > > Server: nginx > > Date: Tue, 03 Jul 2018 00:41:16 GMT > > Content-Type: text/html; charset=UTF-8 > > Content-Length: 0 > > Connection: keep-alive > > Expires: Thu, 19 Nov 1981 08:52:00 GMT > > Cache-Control: no-store, no-cache, must-revalidate > > Pragma: no-cache > > Location: https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&usces_status=none&usces_message=&action=upload_register&mode=all&regfile=UmVnaXN0UHJvZHVjdHNfMTUzMDU3ODQ3Ni5jc3Y= > > X-Original-Date: Tue, 03 Jul 2018 00:41:16 GMT > > X-UA-Device: pc > > > 上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われました。 cronで自動実行するために、どこを修正すれば良いか、ご教授いただけないでしょうか。 よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) WordPress バージョン 4.9.5 welcart バージョン 1.9.10 DLSeller バージョン 2.1.14 cURL 7.29.0
回答: ありがとうございました、自己解決しました。 > > 上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われました。 > > > レスポンスの「Location」がリダイレクト先URLを示すものであることを理解していませんでした。 デフォルトではcURLはリダイレクトを行わないようなので、 オプション「-L」を加えることでリダイレクトされ、商品登録処理が実行されました。 ``` $ ##WordPressにログインしてcookieをファイルに書き出す $ curl --data 'log=(WORDPRESSユーザID)&pwd=(WordPressユーザパスワード)' https://(ドメイン名)/wp-login.php -c ./cookie.txt $ ##商品登録CSVをPOSTする $ ##レスポンスのLocationに示されるURLにリダイレクトする $ curl -X POST -L -F "usces_upcsv=@./usces_item_list.csv" -F upload_mode=all -b ./cookie.txt 'https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv' ```