获取产品属性的选定值到URL参数问题

时间:2017-11-03 18:30:29

标签: php jquery wordpress woocommerce

我的脚本的结果似乎产生了我预期的其他东西,我几次尝试后都无法弄明白。

在这个page上,您选择了一个金属&戒指大小然后点击下面的按钮。据说我的PHP脚本将选定的值抓取到下一页似乎正在工作的URL但它没有给出我想要的内容。有时候如果你回去重新选择它有效,有时它不会......

在我点击提交之前,它似乎选择了我在下拉列表中选择的所有内容。例如,我选择Platinum然后将其更改为Rose Gold。结果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

}

1 个答案:

答案 0 :(得分:0)

您需要在select.blur触发器外部存储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>