Php 订单状态完成后更新用户元-woocommerce

Php 订单状态完成后更新用户元-woocommerce,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我已经读过很多关于这个主题的问题,但是,在一个商业订单完成后,我正在努力更新用户元 我已经在if语句中检查了两倍(三倍)的产品ID,我已经做了很多测试付款,还切换了订单状态以查看用户是否更新了元。我来这里是万不得已的 在消除过程中,我甚至手动将$user\u id和product\u id输入到函数中,但我无法将其输入到update\u user\u meta 任何能帮我找到正确方向的建议都将不胜感激 /** * Update usermeta when the order processed

我已经读过很多关于这个主题的问题,但是,在一个商业订单完成后,我正在努力更新用户元

我已经在
if
语句中检查了两倍(三倍)的产品ID,我已经做了很多测试付款,还切换了订单状态以查看用户是否更新了元。我来这里是万不得已的

在消除过程中,我甚至手动将
$user\u id
product\u id
输入到函数中,但我无法将其输入到
update\u user\u meta

任何能帮我找到正确方向的建议都将不胜感激

/**
 * Update usermeta when the order processed woocommerce
 */
add_action('woocommerce_order_status_completed', 'open_assessment_after_payment');

function open_assessment_after_payment($order_id) {

    $order = new WC_Order( $order_id );
    $items = $order->get_items();

    foreach ( $items as $item ) {
        $product_id = $item['product_id'];
    }

    $current_user = wp_get_current_user();
    $user_id = $current_user->ID;

    if($product_id == '240') {

        update_user_meta( $user_id, 'open_1', true );

    } elseif($product_id == '238') {

        update_user_meta( $user_id, 'open_2', true );

    } elseif($product_id == '239') {

        update_user_meta( $user_id, 'open_3', true );

    }
}

尝试echo/var_转储变量,然后退出immed。代码看起来不错,但它只适用于最后的$items(您在ea循环中覆盖$productid),并且只适用于items=1的情况。我只需要使用“true”而不是true,
update_user_meta($user_id,'open_1,'true')愚蠢的我。