xd
投稿の際は下記の情報をお書き添えください。
-------------------------------------------
WordPress のバージョン:(例 6.0.2)
Welcart のバージョン:(例 2.8.1)
PHP のバージョン:(例 8.0)
Welcart専用の拡張プラグインとバージョン:(例 DL Seller 3.4.1、SKU Select 1.4.2)
ご利用の親テーマとバージョン :(例 Welcart Basic 1.7.1)
ご利用の子テーマとバージョン :(例 Welcart Beldad 1.4)
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------
フォーラムへの返信
-
投稿者投稿
-
xd参加者
> 「Welcartへ渡す」というのは、「カートに投入したい」という意味でしょうか。
同一ドメイン上で「カートに投入したい」という意味になります。
直接のカート投入は難しいというのは、Cookieを介さないからでしょうか?xd参加者承知しました。
ありがとうございます。xd参加者お返事ありがとうございます。
> お使いのテーマでは、wc_templates はご利用でしょうか。
テーマでは利用しておりません。実はテーマではなくWelcartの外装を変更するプラグインを開発しています。
好きなテーマを使いつつ、Welcartのショップテンプレート部分だけを変更するのが目的です。プラグインでは、テンプレートを読み込むファイルパスをプラグイン側に変更して、Welcart本体のテンプレートを使わないようにしています。
> wc_templates を設置されていない場合は、Welcart を最新版(※本日時点で v1.9.15)にアップデートしていただけますでしょうか。
さきほど最新版にアップデートしました。
これでSecurity check2は出なくなるのでしょうか?xd参加者忙しいところお返事頂きありがうございました!
この設定だったのですね。助かりました!xd参加者追加情報です。
Google XML Sitemapsのソースコードを追ってみましたところ、
get_bloginfo(‘url’)
の値がsslではない「http://」から始まるURLになっていました。
welcartを停止すると「https://」に戻ります。optionテーブルのブログURLは「https://」から始まっているので、welcartによって書き換えられているようです。
よろしくお願い致します。xd参加者さきほどの続きです。
ロリポップサーバーで試してみたところ問題はありませんでした。
同じwpxの別のドメインで試してみたところ問題がありませんでした。しかし、wpxの2サイトでは同じ症状が出ています。
これらサイトの違いはインストール時期です。エラーが出ているwelcartのサイトは4年以上前からwelcartをインストールしています。
エラーが出ていないサイトのwelcartは比較的最近でここ1年以内にインストールしています。別の観点からの質問となりますが、逆にwelcartを有効化することによって、サイトマップの生成エラー、httpsがhttpになってしまうようにするにはどのような機能が関わっているでしょうか?
xd参加者——————————————-
WordPress のバージョン:4.9.9
Welcart のバージョン:1.9.14
Welcart専用の拡張プラグイン:なし
ご利用のテーマ:Twentyeleven
症状を確認したブラウザ: win chrome
サーバー: wpx
SSLの利用: 常時SSL
WordPress のパーマリンク設定: 基本
——————————————–私もまったく同じ症状で困っています。
再現環境ですが、プラグインはwelcartとGoogle XML Sitemapsというプラグインのみにします。
welcartをオフにするとサイトマップは表示されますが、有効化するとおかしくなります。具体的にはwelcartが有効な時はプロトコルがhttpで、無効の時はhttpsになっています。
また、別のサイトマッププラグインBetter WordPress Google XML Sitemapsで試すとwelcartが有効な時は生成エラー。
無効の時はサイトマップの生成に成功します。その他、All in One SEO Packのサイトマップでは生成エラーとなります。
welcartのシステム設定では
・SSLの切り替えを行う は行うにチェック
・WordPress のアドレス (SSL) はhttpsのアドレスに変更済み
・サイトのアドレス (SSL) はhttpsのアドレスに変更済み同様にWordPressの一般設定の
・WordPress アドレス (URL)
・サイトアドレス (URL)もhttpsのアドレスに変更済みとなっています。
welcart側でsslの設定がおかしい、またはグローバルな設定を上書きしてしまっている、ということはないでしょうか?
xd参加者あっ訂正です。
以下はorではなくandでした。//会員としてログインしていなければ if(! usces_is_login() and $values[ 'rme' ] != 'forever' )
xd参加者member_login() を見ましたがやはりセッションと連動しているためブラウザを閉じるとダメなようです。
継続的にログインしていることを判定するにはCookieを使うことで解決しました。
コード置いておきます。//Welcartの会員ページログイン時間を変更する///////////////////////////////////// add_filter( 'usces_filter_member_login', 'WELCART_MEMBER_LOGIN' , 1 ); function WELCART_MEMBER_LOGIN( $member ) { //Cookieを取得する $values = isset($_COOKIE['usces_cookie']) ? unserialize(stripslashes($_COOKIE['usces_cookie'])) : NULL; //中身をシリアライズする $value = serialize( $values ); //1年間有効 $timeout = time() + 365 * 86400; $domain = $_SERVER[ 'SERVER_NAME' ]; //クッキーをセットする $res = setcookie( 'usces_cookie' , $value, $timeout , USCES_COOKIEPATH , $domain ); return $member; } //Welcartを会員制にする//////////////////////////////////////////////////////// add_filter( 'usces_filter_single_item_inform' , 'SHOP_IS_MEMBERS_ONLY' , 1 ); function SHOP_IS_MEMBERS_ONLY( $html ) { //Cookieを取得する $values = isset($_COOKIE['usces_cookie']) ? unserialize(stripslashes($_COOKIE['usces_cookie'])) : NULL; global $post , $usces; //価格のパターンをセット $pat = '{(<div\s?class\s?=\s?"field_price">)(.*?)(<\/div>)}i'; //フォームのパターンをセット $pat2 = '{(<input\s?name\s?=\s?"inCart)}i'; //会員としてログインしていなければ if(! usces_is_login() or $values[ 'rme' ] != 'forever' ) { $html = preg_replace( $pat , '<div class="member-attention"><a href="' . USCES_MEMBER_URL . '" target="_blank">ログイン</a>していないため価格が表示されません</div>' , $html ); $html = preg_replace( $pat2 , '<div class="member-attention"><a href="' . USCES_MEMBER_URL . '" target="_blank">ログイン</a>していないためカートへ入れることができません</div>$1' , $html ); $html .= '<style>.field_price , .field_cprice , .itemGpExp , .skubutton{ display: none; }</style>'; } return $html; }
xd参加者私も同じ現象が起きています。
しかし、営業日設定から営業日の開始し終了を指定したら、カートの精算時にキャンペーン割引が表示されるようになりました。キャンペーンと営業日設定については説明が希薄であるため気が付かないと思われます。
それと、キャンペーン割引が精算時にのみ表示されるので、キャンペーンに気がついてもらえないという問題があります。
次期バージョンにて対応お願いします。xd参加者お忙しい中返答ありがとうございました。
> ブラウザを閉じると、次にトップページにアクセスしてもログイン状態ではありません。
ということですので仕様ということで理解しました。
としますと、ブラウザを閉じた後はログイン状態ではないため、ログイン状態を判定するとやはりログインしていないということになり、ログインユーザーの分岐は出来ないということですね。当ショップでは、ログインユーザーだけのサービスを実施しているのですが、一度ログインしないといけないため、結構離脱率が多くて困っています。
ブラウザを閉じた後もユーザー側には無手順でログインユーザーと認識させたいと考えています。なにか用意されているフィルタなどを使って、できそうでしょうか?
とりあえず、今思いついたのは、ログイン情報のCookieは残っているので、ログイン状態の判定はwelcartの関数ではなくCookieで行うというものです。
いかがでしょうか?xd参加者回答有り難うございます。
本来であればブラウザを閉じてもログイン情報が保存されているということですね。
iPhone6のChromeでも同じ現象となってしまいます。それでは質問を変えさせていただきます。
ログイン情報が保存されないとしたら、どんな原因が考えられるのでしょうか?私の誤解もあるかもしれないので、期待しているフローについて書きます。
1.ショップ会員ページにアクセス
2.ログイン画面でメールアドレスとパスワードを入力
3.ログイン情報を記憶にチェックを入れログイン
4.会員のマイページが表示される
5.ブラウザを閉じる
6.再びショップ会員ページにアクセス
7.ログインせずに会員のマイページが表示されるという流れを期待しています。
しかし、実際には、7番ではなく2番となってしまいます。ログイン情報を記憶にチェックを入れても、必ず2番の画面が表示されるけれど、ログイン状態は維持されているのでしょうか?
一応ログイン状態を判定する関数で調べてみても、ログインはしていないことになっています。
しかし、Cookieは保存されています。なのでセッションが切れると同時に、「ログイン情報を記憶」が保存されているCookieを読みに行かず、ログアウトとみなされているのかなと推測しています。
アドバイスよろしくお願いします。xd参加者対応有難うございます。
ところで、Cookieの有効期限なのですが、マイページログイン時に情報を記憶しているのですが、ブラウザを閉じて、もう一度開くとログアウトしています。
Cookieに有効期限を設けない場合はクッキーの有効期限がブラウザを閉じるまでだと思うのですが、コード的に有効期限が指定されているにも係わらず、ブラウザを閉じるとCookieがなくなっているのはなにが原因なのでしょうか。
——————————————-
WordPress のバージョン:4.4.1
Welcart のバージョン:1.6.6.1512212
ご利用のテーマ:オリジナル
症状を確認したブラウザ:Chrome,Firefox
サーバー(会社名、サービス名):wpx
SSLの利用: なし
WordPress のパーマリンク設定:カスタム /%category%/%post_id%/
——————————————–試しにfunctions.phpに以下のコードを追加して調べてみました。
add_filter( 'usces_filter_member_login', 'WELCART_MEMBER_LOGIN' , 1 ); function WELCART_MEMBER_LOGIN( $member ) { //Cookieを取得する $values = isset($_COOKIE['usces_cookie']) ? unserialize(stripslashes($_COOKIE['usces_cookie'])) : NULL; $values['test'] = date( 'Y-m-d H:i:s' , time() ); //中身をシリアライズする $value = serialize( $values ); //1年間有効 $timeout = time() + 365 * 86400; $domain = $_SERVER[ 'SERVER_NAME' ]; //クッキーをセットする $res = setcookie( 'usces_cookie' , $value, $timeout , USCES_COOKIEPATH , $domain ); var_dump($values); return $member; }
Cookieの有効期限を一年間にし、「test」というキーを独自に追加して現在の時刻をCookieに加えました。
ログイン後に$_COOKIE[‘usces_cookie’]でCookieの中身を調べると現在時刻が追加されています。その後、「test」というキーの行はコメントアウトして、Cookieの現在時刻が更新されないようにしました。
一回ブラウザを閉じてログイン情報が記憶されている前提で、マイページやログイン条件判定を試すと、ログインしていないことになります。
再度ログインページを開いてログインすると独自に追加した「test」というキーとさきほどの現在時刻は変わっていません。Cookieには有効期限が設定されているようです。
そこで推測されるのが、セッションが切れるとログイン情報も一緒になくなるのではないか? ということです。
カートの中身はブラウザを閉じてなくなってもいいのですが、ログイン状態については維持したいと考えています。
アドバイスお願いします。xd参加者おおおおおおおっできたああああ!
ありがとうございました。これで納品書が印刷できるようになりました!m(_ _)mxd参加者Warning: tempnam(): open_basedir restriction in effect.
File(/tmp) is not within the allowed path(s): (/home/user/hoge.com/) in /user/hoge.com/public_html/wp-content/plugins/usc-e-shop/pdf/tcpdf/tcpdf.php on line 25372
TCPDF ERROR: Unable to write cache file:今気が付いたのですがtmpが作られる場所がエラーのように
/home/user/hoge.com/
とすると、実際にユーザーが操作できるフォルダは「public_html以下」となっています。
/user/hoge.com/public_html/
権限が認められているのが「public_html以下」なので、この場合はどうにもならないようですね。
wpXの管理画面でもいじれそうもありません。
ロリポップの場合はメインのアカウントがあって、ドメインを追加するとその下にフォルダを作る仕様だったので、ユーザー権限が及んでいたのかもしれません。あまりやりたくないですが、プラグインを改造して「tmp」が作られる場所をユーザー権限がある場所に書き換えるしかない? ようですね。
-
投稿者投稿