首页 > 解决方案 > 以编程方式将 Woocommerce 购物车项目从虚拟更改为物理

问题描述

我需要calculate_cart_item_totals在 Woocommerce 的某个时刻以编程方式将购物车项目从“虚拟”更改为“物理”。这可能吗?

标签: phpwordpresswoocommercevirtualcart

解决方案


您只能使用woocommerce_before_calculate_totals钩子更改购物车项目(产品)属性。现在要将购物车项目从“虚拟”更改为“物理”,您将使用如下WC_Product方法set_virtual()

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 文件中。测试和工作。


推荐阅读