如何更改WooCommerce中特定变体的“添加到购物车”文本?
在我的WooCommerce商店中,我有简单产品和可变产品,简单产品和变体都有一个元值“pre_order”,即是/否 如果在后端设置了此选项,我希望“添加到购物车”按钮显示“预订单”,而不是“添加到购物车” 对于简单的产品,我使用过滤器或编辑文件模板来更改它并没有任何问题,但变化似乎要复杂得多如何更改WooCommerce中特定变体的“添加到购物车”文本?,woocommerce,Woocommerce,在我的WooCommerce商店中,我有简单产品和可变产品,简单产品和变体都有一个元值“pre_order”,即是/否 如果在后端设置了此选项,我希望“添加到购物车”按钮显示“预订单”,而不是“添加到购物车” 对于简单的产品,我使用过滤器或编辑文件模板来更改它并没有任何问题,但变化似乎要复杂得多 选择变体选项后,价格和sku会更新,在此过程中,我还想检查上述元值,如果该变体的元值预订单为“是”,那么我也想更改按钮文本,但我找不到方法 提供一个名为variation_id的隐藏输入字段。一旦变量发
选择变体选项后,价格和sku会更新,在此过程中,我还想检查上述元值,如果该变体的元值预订单为“是”,那么我也想更改按钮文本,但我找不到方法 提供一个名为variation_id的隐藏输入字段。一旦变量发生变化,更新的变量id就会保存在此隐藏输入字段中。因此,首先您必须使用jQuery检测何时更新此输入字段的值,当检测到时触发您自己的ajax请求,并检查此变体是否分配给预订单。如果是,现在您可以在ajax响应成功后更改add to cart的文本 提供一个名为variation_id的隐藏输入字段。一旦变量发生变化,更新的变量id就会保存在此隐藏输入字段中。因此,首先您必须使用jQuery检测何时更新此输入字段的值,当检测到时触发您自己的ajax请求,并检查此变体是否分配给预订单。如果是,现在您可以在ajax响应成功后更改add to cart的文本 WooCommerce在
.variations\u form
元素中名为data-product\u variations
的数据属性中存储变化细节(如价格、尺寸、重量等)。当用户选择一个特定的变量时,此数据用于显示价格和其他详细信息。您可以使用过滤器woocommerce\u available\u variation
在该数据属性中添加元值,例如:
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\u available\u variation
的更多详细信息
一旦在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
} );
请注意:代码未经测试,因此可能存在一些拼写错误;) WooCommerce在
.variations\u form
元素中名为data-product\u variations
的数据属性中存储变化细节(如价格、尺寸、重量等)。当用户选择一个特定的变量时,此数据用于显示价格和其他详细信息。您可以使用过滤器woocommerce\u available\u variation
在该数据属性中添加元值,例如:
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\u available\u variation
的更多详细信息
一旦在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
} );
请注意:代码未经测试,因此可能存在一些拼写错误;)