如何更改WooCommerce中特定变体的“添加到购物车”文本?

如何更改WooCommerce中特定变体的“添加到购物车”文本?,woocommerce,Woocommerce,在我的WooCommerce商店中,我有简单产品和可变产品,简单产品和变体都有一个元值“pre_order”,即是/否 如果在后端设置了此选项,我希望“添加到购物车”按钮显示“预订单”,而不是“添加到购物车” 对于简单的产品,我使用过滤器或编辑文件模板来更改它并没有任何问题,但变化似乎要复杂得多 选择变体选项后,价格和sku会更新,在此过程中,我还想检查上述元值,如果该变体的元值预订单为“是”,那么我也想更改按钮文本,但我找不到方法 提供一个名为variation_id的隐藏输入字段。一旦变量发

在我的WooCommerce商店中,我有简单产品和可变产品,简单产品和变体都有一个元值“pre_order”,即是/否

如果在后端设置了此选项,我希望“添加到购物车”按钮显示“预订单”,而不是“添加到购物车”

对于简单的产品,我使用过滤器或编辑文件模板来更改它并没有任何问题,但变化似乎要复杂得多


选择变体选项后,价格和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
} );
请注意:代码未经测试,因此可能存在一些拼写错误;)