DLSeller一括商品登録をcronで自動実行したい
- このトピックには1件の返信、1人の参加者があり、最後にsuperflycoreにより6年、 4ヶ月前に更新されました。
-
投稿者投稿
-
2018年7月3日 11:24 AM #86022superflycore参加者
お世話になります。
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.)を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による自動起動で実行する | クラウドロジスティクス
http://crowd-logic.com/blog/archives/29768ログインは成功しているようなのですが、
その後の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®file=UmVnaXN0UHJvZHVjdHNfMTUzMDU3ODQ3Ni5jc3Y=
> X-Original-Date: Tue, 03 Jul 2018 00:41:16 GMT
> X-UA-Device: pc上記のLocationに記載されているURLにブラウザでアクセスしてみたところ商品登録が行われたため、
以下を追加で実行してみました。$ curl -X POST -b ./cookie.txt ‘https://(ドメイン名)/wp-admin/admin.php?page=usces_itemedit&action=itemcsv’ –include
(レスポンス)
> HTTP/1.1 302 Found
> Server: nginx
> Date: Tue, 03 Jul 2018 02:00:27 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=error&usces_message=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82
> X-Original-Date: Tue, 03 Jul 2018 02:00:27 GMT
> X-UA-Device: pcレスポンス中のLocation内usces_messageをURLデコードすると
「ファイルをアップロードできませんでした。」とのことでした。
前の手順でアップロードしたファイルを参照できていないのでしょうか。cronで自動実行するために、どこを修正すれば良いか、ご教授いただけないでしょうか。
よろしくお願いいたします。運用環境
——————————————-
WordPress のバージョン:4.9.5
Welcart のバージョン:1.9.10
DLSeller のバージョン 2.1.14
cURL のバージョン 7.29.0
ご利用のテーマ:WelcartBasicの自作子テーマ
症状を確認したブラウザ:
サーバー:エックスサーバ X10
SSLの利用:常時SSL
WordPress のパーマリンク設定:/%category%/%postname%.html
——————————————–2018年7月4日 9:47 AM #86028superflycore参加者ありがとうございました、自己解決しました。
Welcartのフォーラムに投稿してしまいましたが、
原因はcURLコマンドの使い方にあったようです。失礼いたしました。> 上記の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'
- この返信は6年、 4ヶ月前にsuperflycoreが編集しました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。