获取选中的产品差异化ID在WooCommerce变型产品单页
问题描述:
对我实施单一的产品页面上自定义大小选择器,并在表中有这样的尺寸我Woocommerce变型产品:获取选中的产品差异化ID在WooCommerce变型产品单页
这些变化只是:30B
30C
30D
,而不是被拆分:30
和B
C
D
我试图搞清楚的是:如何抓住每个产品变化的航运类?
我的购物车页面上类似的东西,但我不知道什么是变化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?
答
在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单品页):
所以在篮/购物车页面,你是tr要获取变体ID,然后获取购物车中每个可变产品的运输类,是否正确? – Und3rTow
Hi @ Und3rTow,在购物篮页面上工作,尝试在实际的单品页面上为每个变体显示出货类,并将商品添加到购物篮中。 – martincarlin87