2017-10-18 55 views
1

在我的WooCommerce商店中,我有简单的产品和可变的产品,简单的产品和变体都具有“pre_order”的元值,即“是/否”。如何更改WooCommerce中特定变体的添加到购物车文本?

如果在后端设置此选项,我希望添加到购物车按钮说'预购',而不是'添加到购物车'。

对于简单的产品,我有没有问题,改变这种使用过滤器或编辑文件模板,变化似乎尽管有很多麻烦......

当选择的变化选项那么价格和SKU的更新,在这个过程中我也想要检查上面提到的元值,并且如果这种变化具有“是”的元值预定顺序,那么我也想改变按钮文本,但是我找不到这样做的方式!

回答

0

WooCommerce提供了一个名为variation_id的隐藏输入字段。只要变化发生变化,更新后的变体编号就会保存在此隐藏的输入字段中。所以首先你必须检测使用jQuery时,这个输入字段的值更新,当检测到火灾自己的ajax请求,并检查这种变化是否分配给预购或如果是的话,现在你可以改变文本添加到购物车后阿贾克斯的回应是成功。

0

WooCommerce在.variations_form元素中存储名为data-product_variations的数据属性中的变体详细信息(如价格,尺寸,重量等)。此数据用于显示用户选择特定变体时的价格和其他详细信息。

add_filter('woocommerce_available_variation', 'vna_add_variation_meta'); 
function vna_add_variation_meta($dataattr, $product, $variation) { 
    $dataattr['pre_order'] = get_post_meta($variation->get_id(), 'pre_order', true); 
    return $dataattr; 
} 

可以在class-wc-product-variable.php文件中找到有关woocommerce_available_variation更多细节:您可以使用过滤器woocommerce_available_variation像这个数据属性添加您的meta值。

一旦获得了DOM元素中的元值,就可以使用以下事件知道用户何时选择了变体。

$(".single_variation_wrap").on("show_variation", function (event, variation) { 
    // Fired when the user selects all the required dropdowns/attributes 
    // and a final variation is selected/shown 
    // Here you will need to get the value of 'pre_order' from the variation object 
    // something like: variation.pre_order 
    // and take appropriate action 
}); 

请注意:代码是未经测试这样可能会出现一些错别字;)

相关问题