2017-08-24 107 views
2

对我实施单一的产品页面上自定义大小选择器,并在表中有这样的尺寸我Woocommerce变型产品:获取选中的产品差异化ID在WooCommerce变型产品单页

enter image description here

这些变化只是:30B30C30D,而不是被拆分:30BCD

我试图搞清楚的是:如何抓住每个产品变化的航运类?

我的购物车页面上类似的东西,但我不知道什么是变化ID或如何从单一的产品页面获得它:

$product_id = (0 != $cart_item['variation_id']) ? $cart_item['variation_id'] : $cart_item['product_id']; 
// need the variation id for the above to be able to do the rest: 

$product_shipping_classes = get_the_terms($product_id, 'product_shipping_class'); 
$product_shipping_class_name = ($product_shipping_classes && ! is_wp_error($product_shipping_classes)) ? current($product_shipping_classes)->name : ''; 

我知道该怎么做,一旦我有变体ID。我只是无法弄清楚如何才能完成剩下的工作。我需要获得的唯一东西是产品ID和变体的slu((此页面上也有一个颜色属性)。

但是我已经给产品一个默认的变化使用(所以隐藏variation_id设置)。

也许需要首先获取所需颜色的ID,然后获取其他颜色的变体ID?

+0

所以在篮/购物车页面,你是tr要获取变体ID,然后获取购物车中每个可变产品的运输类,是否正确? – Und3rTow

+0

Hi @ Und3rTow,在购物篮页面上工作,尝试在实际的单品页面上为每个变体显示出货类,并将商品添加到购物篮中。 – martincarlin87

回答

3

在WooCommerce产品可变产品单页中,您无法获得PHP中选定的产品变体,因为它是实时事件(客户端,而不是服务器端)。

这样做的方法是使用JavaScript/jQuery来获取它。由于您不会为这个单一产品页面提供有关您的变量产品的任何相关代码,因此我不可能为您提供一个完全符合您需求的实际工作代码。

获取变量产品单品页的所选择的变体ID(在这个例子中我显示所选择的变体ID动态下面添加到购物车按钮)

add_action('woocommerce_single_product_summary', 'single_product_variable_customization', 3, 0); 
function single_product_variable_customization() { 
    global $product; 

    // Only for variable products on single product pages 
    if ($product->is_type('variable') && is_product()) { 

    ## ==> ==> Here goes your php code (if needed) ==> ==> ## 

    // Passing a variable to javascript 
    $string1 = "The selected Variation ID is: "; 
    $string2 = "No Variation ID is selected "; 
    ?> 
    <script> 
    jQuery(document).ready(function($) { 

     // Initializing 
     var myText1 = '<?php echo $string1; ?>', myText2 = '<?php echo $string2; ?>'; 

     // Get and display the default variation ID after add-to-cart button (initialization) 
     if('' != $('input.variation_id').val()) 
      $('div.woocommerce-variation-add-to-cart').after('<div class="selected-variation-id">'+myText1+$('input.variation_id').val()+'</div>'); 
     else 
      $('div.woocommerce-variation-add-to-cart').after('<div class="selected-variation-id">'+myText2+'</div>'); // No ID selected 

     console.log($('input.variation_id').val()); // Output in the browser console 


     // Get and display the chosen variation ID after add-to-cart button 
     $('select').blur(function(){ 
      if('' != $('input.variation_id').val()) 
       $('div.selected-variation-id').html(myText1+$('input.variation_id').val()); 
      else 
       $('div.selected-variation-id').html(myText2); // No ID selected 

      console.log($('input.variation_id').val()); // Output in the browser console 
     }); 
    }); 
    </script> 
    <?php 
    } 
} 

代码放在function.php您活动的儿童主题(或主题)的文件或任何插件文件中。

此代码在WooCommerce 3+下测试并正常工作。

所以在这个基础上,你可以使你自己的功能符合你的要求(因为你不再给出必要的细节或代码)。

一些相关答案示例使用(使用jQuery和Woocommerce单品页):