Php 以编程方式将购物车项目从虚拟更改为物理

Php 以编程方式将购物车项目从虚拟更改为物理,php,wordpress,woocommerce,virtual,cart,Php,Wordpress,Woocommerce,Virtual,Cart,我需要在Woocommerce中的calculate\u cart\u item\u totals中的某个点以编程方式将购物车项目从“虚拟”更改为“物理”。这可能吗?您只能在计算总计之前使用woocommerce\u更改购物车项目(产品)属性。现在,要将购物车项目从“虚拟”更改为“物理”,您将使用以下方法: add_action( 'woocommerce_before_calculate_totals', 'custom_cart_item_data_replacement', 16 ); f

我需要在Woocommerce中的
calculate\u cart\u item\u totals
中的某个点以编程方式将购物车项目从“虚拟”更改为“物理”。这可能吗?

您只能在计算总计之前使用
woocommerce\u更改购物车项目(产品)属性。现在,要将购物车项目从“虚拟”更改为“物理”,您将使用以下方法:

add_action( 'woocommerce_before_calculate_totals', 'custom_cart_item_data_replacement', 16 );
function custom_cart_item_data_replacement( $cart ) {

    foreach ( $cart->get_cart() as $cart_item ) {
        // Change virtual cart item to "physical"
        if( $cart_item['data']->get_virtual() ) {
            $cart_item['data']->set_virtual(false);
        }
    }
}

代码进入活动子主题(或活动主题)的functions.php文件。测试和工作