2017-08-24 110 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單品頁):