sku select使用時に再入荷お知らせボタンで、商品名を引き渡す際に違うskuセレクト名がでてしまう

フォーラム 使い方全般 sku select使用時に再入荷お知らせボタンで、商品名を引き渡す際に違うskuセレクト名がでてしまう

  • このトピックには8件の返信、2人の参加者があり、最後にyamanocoにより4年前に更新されました。
9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • 投稿者
    投稿
  • #91224
    yamanoco
    参加者

    ——————————————-
    WordPress のバージョン: 5.4.2
    Welcart のバージョン: 1.9.30
    PHP のバージョン:7.3.17
    Welcart専用の拡張プラグインとバージョン: SKU Select
    ご利用のテーマ:自作子テーマ
    症状を確認したブラウザ:chrome、iphoneのsafari
    サーバー:ロリポップ
    SSLの利用:独自SSL
    ——————————————–

    下記URLを参考に、商品が品切れ時に再入荷ボタンを設置し、別ウィンドウで開いた画面の「商品名」部分に自動的に商品名を渡すようにしています。
    ▼参考URL
    https://it-studio.jp/welcart-%E5%95%86%E5%93%81%E3%81%A8contactform7%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B/
    ▼問題がおこっているURL
    https://www.yamanoco-books.com/post-3764/

    ▼現状の記述
    function.php

    function my_form_tag_filter($tag){
    if ( ! is_array( $tag ) )
    return $tag;
    if(isset($_GET['goods'])){
        $name = $tag['name'];
        if($name == 'your-goods')
          $tag['values'] = (array) $_GET['goods'];
    }
    return $tag;
    }
    add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

    ▼wc_sku_select.php内

    <div class="zaiko_status itemsoldout">
    <span class="ss_stockstatus mb-10">
    <?php echo apply_filters('usces_filters_single_sku_zaiko_message', esc_html(usces_get_itemZaiko( 'name' ))); ?>
    </span>
    <a href="<?php echo home_url('restock/?goods='); ?>
    <?php usces_the_itemName() ?>_<?php usces_the_itemSku() ?>" class="inquery_button" onclick="window.open('<?php echo home_url('restock/?goods='); ?>
    <?php usces_the_itemName() ?>_<?php usces_the_itemSkuDisp() ?>', '', 'width=500,height=1000'); return false;">
    再入荷お知らせ
    </a>
    </div>

    別ウィンドウで開いた際に商品名に正しくない商品名(商品情報編集画面のSKU価格の枠の中の一番下に表示されるもの)が記載されてしまいます。
    SKU selectを使用していない商品に関しては商品が1つしかないこともあり、特に問題なく使用できるようでした。

    それぞれのSKU表示名を別ウィンドウの「商品名」に情報を渡したい場合、どのようにしたら良いか、お力を貸していただけると大変助かります。

    #91249
    sagawa
    キーマスター

    こんにちは。

    参考URL内に、「ループ内に以下を追記」とあります。wc_sku_select.php内にて記載したコードはループ文の中に記載されていますでしょうか?
    推測になりますが、SKUコードが最初の1つしか取得できないとの事ですので、おそらくループ文の中に記載されていれば、反映されるのではないかと思います。

    #91258
    yamanoco
    参加者

    >sagawaさま
    お忙しい中、ご回答いただきありがとうございます。

    参考URLではsku selectは使用していないようで、sku selectだとボタンの切り替えがjavascriptでの切り替えになるとのことで、sku select設定時にループ文を私の方で外していたのでした・・。

    ▼7. カートボタンの修正より
    https://www.welcart.com/docs/SkuSelect/themes.html

    ですので、ループの中には入っていませんでした。ここにループを追記する・・?
    というのはどういう記述になるのでしょうか・・??よくわかっておらずすみません・・。

    sku selectを使っていて、かつ品切れ時にContact Form 7に商品名を引き渡すという
    他の参考にできるものもみつからず、再び質問になってしまってすみません。
    お時間ございましたらご教授いただければ大変助かります。どうぞよろしくお願いいたします。

    • この返信は4年前にyamanocoが編集しました。
    #91280
    sagawa
    キーマスター

    こんにちは。

    実際に同じコードを追記して確認しました。
    今回のケースはループ文内への記載は関係ありませんでした。すみません。

    SKU Selectを使っていて、かつSKU表示名を取り出す場合は、少し難しいと思います。
    「usces_the_itemSkuDisp()」の代わりに「$usces->getItemSkuDisp($post->ID, [SKUコード])」を使えばSKU表示名は取得できます。
    また、SKUコードも「カートへ入れる」ボタンのタグ内やJavaScriptで取得はできますが、上記の関数の引数として渡すことが難しいと思います。
    ここで、詳しくレクチャーはできませんが、お試しいただけますでしょうか?

    #91286
    yamanoco
    参加者

    >sagawaさま
    ループ文を追加してみても変わらずどうしたら良いかと考えているところでした。
    実際にご確認もいただけたようで、度々お手数をおかけしてすみません。ありがとうございます。

    SKU Selectを使っていて、かつSKU表示名を取り出すのは難しいのですね。
    「usces_the_itemSkuDisp()」の代わりに「$usces->getItemSkuDisp($post->ID, [SKUコード])」を使うというのは、
    wc_sku_select.php内に記述するのではなく、function.phpに記述するということですか?
    echoで出力させるのか?と試してみましたが、商品名以下が空白になってしまい、正しく表示できませんでした。

    [SKUコード]の部分には実際どういった形で入力したら良いのかなど、
    「$usces->getItemSkuDisp($post->ID」で調べてみても、似たような事例がないようで、
    どこにどう記述したら良いかイメージがつきづらく困惑しております。

    詳しいレクチャーでなくても良いのですが、なにか修正方法のイメージがつきやすいサイトか何かあれば
    合わせてお教えいただいてもよろしいでしょうか。度々申し訳ありません。

    #91298
    sagawa
    キーマスター

    こんにちは。

    今、wc_sku_select.php内にて「_」と記述されているかと思います。ここの「usces_the_itemSkuDisp()」の代わりに「$usces->getItemSkuDisp($post->ID, [SKUコード])」を使うということを言いたかったのですが、説明不足で申し訳ありません。
    結論を申し上げますと、

    global $usces;
    $usces->getItemSkuDisp($post->ID, ’code0:0:0’);

    で指定したポストIDのSKUコード「code0:0:0」のSKU表示名が取得できます。

    カートに入れるボタンのソースを見ると[inputタグ]のname属性などに「inCart[3764][code0%3A0%3A0]」となっています。この「[code0%3A0%3A0]」はURLエンコードされていますので、デコードをすれば「code0:0:0」となり、SKUコードが取得できるはずです。
    ただし、この「getItemSkuDisp関数」の引数にSKUコードを渡すところが一番難しいと思います。

    残念ながらyamanoco様がどこまでの情報があればよいか判断できかねますため、サイトなどをご紹介することはできませんが、ネット検索をかけてもらえればある程度情報が出てくるかと思います。

    #91313
    yamanoco
    参加者

    >sagawaさま
    こんばんは。

    いえいえ、こちらがなかなか理解が乏しく、度々説明していただく形になりすみません。
    大変助かります。が、やっぱり理解が乏しいようです。すみません・・。
    教えていただいたように、wc_sku_select.php内にて、

    <a href="<?php echo home_url('restock/?goods='); ?>
    <?php usces_the_itemName() ?>_<?php global $usces;
    $usces->getItemSkuDisp($post->ID, ’code0:0:0’); ?>" class="inquery_button" onclick="window.open('<?php echo home_url('restock/?goods='); ?>
    <?php usces_the_itemName() ?>_<?php global $usces;
    $usces->getItemSkuDisp($post->ID, ’code0:0:0’); ?>', '', 'width=500,height=1000'); return false;">
    再入荷お知らせ
    </a>

    usces_the_itemSkuDisp()」の代わりに「$usces->getItemSkuDisp($post->ID, [SKUコード])」を使うとのことで、
    上記のように入れてみたのですが、サイトがとんで真っ白になってしまいました。

    再入荷時の問合せの際に商品名を最初から記載させたいだけなのですが、SKUselectが入っていると難しいのですかね。

    >残念ながらyamanoco様がどこまでの情報があればよいか判断できかねますため

    再入荷時の問合せボタンを設置していて商品名を渡す処理をsku selectが入っている状態でおこなっている方の「こうやって設定した」という例がどこかにあれば、照らし合わせて参考にしやすいと思ったのです。
    「再入荷時に問合せボタンを設置して、商品名をフォームに渡す」というのは複数探し当てることはできるのですが、
    sku selectを使っていて、ということになると、どうも見つからずご存知であればと思った次第です。

    #91328
    sagawa
    キーマスター

    こんにちは。

    今回のケースの場合は「$usces->getItemSkuDisp($post->ID, [SKUコード])」はechoしないと反映されませんので、そのために表示されない状況になっている。
    もしくは、コードにあやまりがあることが想定されますが、実際に上記のコードをペーストすると「’code0:0:0’」がシングルクォーテーションではないので、この辺も考えられます。

    また、JavaScriptを使うことになるかと思いますので、JavaScriptで出来るところはしてしまうのも手かもしれません。

    もし、ご自身で実装が難しい場合はこちらも併せてご検討ください。

    #91363
    yamanoco
    参加者

    >sagawaさま
    こんにちは。
    度々のご回答ありがとうございます。

    やはりどうも私レベルでは実装が難しいようで、
    御社に依頼するにも同様の該当する品物が今後のことを考えて極端に少ないこともあり、
    今回は商品名だけを反映させ、sku selectでの値はお客様に入力をお願いする形にいたしました。

    せっかく度々ご回答くださったのに、力が及ばず申し訳ありません。
    今後ともどうぞよろしくお願いいたします。

9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • このトピックに返信するにはログインが必要です。