2017-11-03 21 views
1

私のスクリプトの結果は、私が期待していたもの以外のものを作り出しているようで、何回か試してみるとわかりません。URLパラメータの問題で製品属性の選択値を取得する

このpageには、メタル&リングサイズを選択し、次に下のボタンを押します。おそらく私のPHPスクリプトは、選択された値を次のページのURLに取り込んでいるようですが、それは私が望むものを正確に与えていないようです。場合によっては元に戻って再選択すると機能することがあります。

提出する前にドロップダウンで選択したものがすべて選択されているようです。たとえば、私はプラチナを選択し、ローズゴールドに変更します。結果のURLには両方のメタルが表示されます。これは本当に奇妙です。

マイ期待される成果:http://test.ascension.systems/booking-appointments/?productid=2105&productsku=&metal=RoseGold&ringsize=14

現在の結果:http://test.ascension.systems/booking-appointments/?productid=2105&productsku=&metal=Rose%20Gold&ringsize=14&metal=Rose%20Gold&ringsize=11

私のPHPスクリプト(スクリプトは底部付近にある):

// Add a custom button in Single product pages 
add_action('woocommerce_single_product_summary', 'replacing_template_single_add_to_cart', 31, 0); 
function replacing_template_single_add_to_cart() { 
    global $product; 

    $product_id = $product->get_id(); 
    $sku = $product->get_sku(); 

    // Set below the page ID, your button text and link parameters to pass in url 
    $Pickerpage_id = 2100; //Ring Picker Page 
    $Bookpage_id = 1277; //Booking Page 


    $SPPbutton_text = __('Choose your Ring Setting', 'woocommerce'); 
    $Ringbutton_text = __('Make an Appointment Now', 'woocommerce'); 
    $SPPlink = get_permalink($Pickerpage_id) . '?productid=' . $product_id . '&productsku=' . $sku; 
    //$Ringlink = get_permalink($Bookpage_id) . '?productid=' . $product_id . '&productsku=' . $sku; 
    $Ringlink = get_permalink($Bookpage_id) . '?productid=' . $product_id . '&productsku=' . $sku; 

    $terms = get_the_terms($product->ID, 'product_cat'); 
    if (has_term('Ring Setting', 'product_cat')) { 
     echo '<a href="'.$Ringlink.'" class="book-now button">'.$Ringbutton_text.'</a>'; 
    } else { 
     echo '<a href="'.$SPPlink.'" class="ring button">'.$SPPbutton_text.'</a>'; 
    } 

    ?> 



    <script> 
    jQuery(document).ready(function($) { 
     $('select').blur(function(){ 
      selectedValue = $('select#metal option:checked').val(); 
      ringValue = $('select#ring-size option:checked').val(); 
      hrefAttribute = $('a.book-now').attr("href"); 
      $('a.book-now').attr("href", hrefAttribute+'&metal='+selectedValue+'&ringsize='+ringValue); 

     }); 
    }); 
    </script> 
    <?php 

} 
+0

hrefプロパティにはURL全体が含まれています – B68C

答えて

0

あなたが選択から外部hrefAttributeを格納する必要があります。ブラートリガー。

<script> 
    hrefAttribute=''; 
    jQuery(document).ready(function($) { 
    hrefAttribute = $('a.book-now').attr("href"); 
     $('select').blur(function(){ 
      selectedValue = $('select#metal option:checked').val(); 
      ringValue = $('select#ring-size option:checked').val();   
      $('a.book-now').attr("href", hrefAttribute+'&metal='+selectedValue+'&ringsize='+ringValue); 

     }); 
    }); 
</script> 
+0

ありがとうございます!なぜそれが重要なのか説明できますか? – pkmangg

+0

hrefAttributeが内部にある場合、最初にhrefAttribute + metal + ringsizeの値を取得していました。その後、最初の(デフォルト)値の代わりにhrefAtributeの現在(新しい)値を要求していました。だからこそhrefAttribute + metal + ringsize + metal + ringsizeを得ていたのです。その場合、選択ボックスをもう一度選択すると、hrefAttribute + metal + ringsize + metal + ringsize + metal + ringsizeが得られます。 3回。等々。 –

+0

ああ、分かりました。ありがとうございました – pkmangg

関連する問題