如何更改WooCommerce中特定变体的添加到购物车文本?
在我的WooCommerce商店中,我有简单的产品和可变的产品,简单的产品和变体都具有“pre_order”的元值,即“是/否”。如何更改WooCommerce中特定变体的添加到购物车文本?
如果在后端设置此选项,我希望添加到购物车按钮说'预购',而不是'添加到购物车'。
对于简单的产品,我有没有问题,改变这种使用过滤器或编辑文件模板,变化似乎尽管有很多麻烦......
当选择的变化选项那么价格和SKU的更新,在这个过程中我也想要检查上面提到的元值,并且如果这种变化具有“是”的元值预定顺序,那么我也想改变按钮文本,但是我找不到这样做的方式!
WooCommerce提供了一个名为variation_id的隐藏输入字段。只要变化发生变化,更新后的变体编号就会保存在此隐藏的输入字段中。所以首先你必须检测使用jQuery时,这个输入字段的值更新,当检测到火灾自己的ajax请求,并检查这种变化是否分配给预购或如果是的话,现在你可以改变文本添加到购物车后阿贾克斯的回应是成功。
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
});
请注意:代码是未经测试这样可能会出现一些错别字;)