Woocommerce 产品插件按值过滤插件

Woocommerce Product Addons Filter Addon's by value

我的网站上有一个产品,允许用户 select 从产品插件列表中选择他们希望在订单中包含哪些项目。默认值为 0,用户可以输入任何数字以将该插件包含在他们的订单中。

我正在使用以下代码从购物车和订单确认页面中成功过滤掉所有值为 0 的插件。但我无法弄清楚如何从管理区域或管理员和客户电子邮件中的订单详细信息中过滤掉它们。希望这里有人能给我一些answers/direction。

add_filter( 'woocommerce_order_get_items', 'custom_order_items', 10, 2 );


function custom_order_items( $order_meta ) {
    reset($order_meta);
    $first_key = key($order_meta);

    $search_term = 'Basket Items - ';
    $order = reset($order_meta);

    if( is_array($order['item_meta']) ) {

        foreach ( $order['item_meta'] as $key => $value ) {
            if (strpos($key, $search_term) !== false && $value[0] == 0) {
                unset($order['item_meta'][$key]);
            }
        }


        $order_meta[$first_key] = $order;

    }

    return $order_meta;

}

在尝试了几十个 Woocommerce 过滤器之后,我终于找到了解决这个问题的方法。通过在将产品添加到购物车时过滤产品数组,我能够成功过滤掉值为 0 的插件。

add_filter( 'woocommerce_add_cart_item', 'custom_function', 10, 2 );

function custom_function( $item ) {
    $addons = $item['addons'];

    foreach( $addons as $key => $value) {
        if( $value['value'] === 0 ) {
            unset($addons[$key]);
        }
    }

    $item['addons'] = $addons;

    return $item;
}