根据变体更改 WooCommerce 可变产品标题
Change WooCommerce variable product title based on variations
我在自定义 select 框中为我的一组产品编码,这些产品会根据用户的 selection 更改价格。它运作良好,但现在我也需要根据他们的 selection 更改产品标题。
基本上如果选择选项 1,产品名称保持不变。但是如果选择了选项 2,我需要在产品标题的末尾添加“-RZ”。
我不确定我是否可以在我更改价格的 'woocommerce_before_calculate_totals' 挂钩中执行此操作,但是如果有人知道我应该使用的挂钩以及通过 [= 访问当前产品标题的代码23=] 那太好了。
这里是修改价格的代码,如果有用的话:
function calculate_core_fee( $cart_object ) {
if( !WC()->session->__isset( "reload_checkout" )) {
/* core price */
//echo $additionalPrice;
//$additionalPrice = 100;
foreach ( $cart_object->cart_contents as $key => $value ) {
$product_id = $value['product_id'];
if( isset( $value["addOn"] ) && $value["addOn"] == $product_id) {
$additionalPrice = $value['core'];
/* Woocommerce 3.0 + */
$orgPrice = floatval( $value['data']->get_price() );
//echo $additionalPrice;
//echo $orgPrice;
$value['data']->set_price( $orgPrice + $additionalPrice );
}
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_core_fee', 99 );
我知道可能必须获取名称并将其存储在 SESSION 变量中以便以后使用,如果执行此操作的挂钩位于购物车、结帐或订单页面而不是 single-product 页。
是的,这在同一个钩子中是可能的。您可以使用 class WC_Product
get_name()
and set_name()
方法操作产品标题。但至于价格,您应该设置并获取自定义购物车字段值,使其成为 (就像 $additionalPrice = $value['core'];
)。
在这里查看一个简单的相关答案:Changing WooCommerce cart item names
所以你可以有类似的东西(只是一个假的例子):
// Get your custom field cart value for the user selection
$userSelection = $value['user_selection'];
// Get original title
$originalTitle = $value['data']->get_name();
// Conditionally set the new item title
if($userSelection == 'option2')
$value['data']->set_name( $originalTitle . '-RZ' );
我在自定义 select 框中为我的一组产品编码,这些产品会根据用户的 selection 更改价格。它运作良好,但现在我也需要根据他们的 selection 更改产品标题。
基本上如果选择选项 1,产品名称保持不变。但是如果选择了选项 2,我需要在产品标题的末尾添加“-RZ”。
我不确定我是否可以在我更改价格的 'woocommerce_before_calculate_totals' 挂钩中执行此操作,但是如果有人知道我应该使用的挂钩以及通过 [= 访问当前产品标题的代码23=] 那太好了。
这里是修改价格的代码,如果有用的话:
function calculate_core_fee( $cart_object ) {
if( !WC()->session->__isset( "reload_checkout" )) {
/* core price */
//echo $additionalPrice;
//$additionalPrice = 100;
foreach ( $cart_object->cart_contents as $key => $value ) {
$product_id = $value['product_id'];
if( isset( $value["addOn"] ) && $value["addOn"] == $product_id) {
$additionalPrice = $value['core'];
/* Woocommerce 3.0 + */
$orgPrice = floatval( $value['data']->get_price() );
//echo $additionalPrice;
//echo $orgPrice;
$value['data']->set_price( $orgPrice + $additionalPrice );
}
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_core_fee', 99 );
我知道可能必须获取名称并将其存储在 SESSION 变量中以便以后使用,如果执行此操作的挂钩位于购物车、结帐或订单页面而不是 single-product 页。
是的,这在同一个钩子中是可能的。您可以使用 class WC_Product
get_name()
and set_name()
方法操作产品标题。但至于价格,您应该设置并获取自定义购物车字段值,使其成为 (就像 $additionalPrice = $value['core'];
)。
在这里查看一个简单的相关答案:Changing WooCommerce cart item names
所以你可以有类似的东西(只是一个假的例子):
// Get your custom field cart value for the user selection
$userSelection = $value['user_selection'];
// Get original title
$originalTitle = $value['data']->get_name();
// Conditionally set the new item title
if($userSelection == 'option2')
$value['data']->set_name( $originalTitle . '-RZ' );