Php 基于变化更改可变产品名称

Php 基于变化更改可变产品名称,php,wordpress,woocommerce,cart,variations,Php,Wordpress,Woocommerce,Cart,Variations,我在一个自定义选择框中编码了一组我的产品,这些产品会根据用户的选择更改价格。它工作得很好,但现在我也需要根据他们的选择来更改产品名称 基本上,如果选择选项1,产品名称保持不变。但是如果选择了选项2,我需要在产品标题的末尾添加-RZ 我不确定我是否可以在“woocommerce\u before\u calculate\u totals”钩子中修改价格,但如果有人知道我应该使用的钩子以及通过PHP访问当前产品标题的代码,那就太好了 如果有帮助,下面是更改价格的代码: function calcul

我在一个自定义选择框中编码了一组我的产品,这些产品会根据用户的选择更改价格。它工作得很好,但现在我也需要根据他们的选择来更改产品名称

基本上,如果选择选项1,产品名称保持不变。但是如果选择了选项2,我需要在产品标题的末尾添加-RZ

我不确定我是否可以在“woocommerce\u before\u calculate\u totals”钩子中修改价格,但如果有人知道我应该使用的钩子以及通过PHP访问当前产品标题的代码,那就太好了

如果有帮助,下面是更改价格的代码:

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 );
我知道如果钩子位于购物车、结帐或订单页面而不是单个产品页面上,则可能必须获取名称并将其存储在会话变量中以供以后使用

是的,这在同一个钩子中是可能的。您可以使用类和方法操纵产品标题。但是对于价格,您应该设置并获取一个自定义购物车字段值,使其与$additionalPrice=$value['core']

下面是一个简单的相关答案:

所以你可以有一个假例子:


好极了非常感谢。
// 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' );