对于状态已完成的WooCommerce订单上的特定产品,请执行操作

时间:2019-05-23 09:00:39

标签: php wordpress woocommerce product orders

在WooCommerce中,如果要购买列表中的至少一种产品并且该产品的当前订单状态已完成,我想执行一项操作。

例如,我只能验证产品是否已购买:

global $woocommerce;
$user_id = get_current_user_id();
$current_user= wp_get_current_user();
$product_list = array('11', '12', '13', '14', '15','16');
$text= false;
  foreach ($product_list as $value):
    if (wc_customer_bought_product( $customer_email, $user_id, $value) ) {
        $text = true;
     }
  endforeach;

1 个答案:

答案 0 :(得分:0)

尝试以下挂钩函数,该函数在每次订单状态为“已完成”时都会触发,请检查当前订单中是否有您定义的列表中的商品,从而可以执行操作:

add_action('woocommerce_order_status_completed', 'action_on_order_status_completed', 10, 2 );
function action_on_order_status_completed( $order_id, $order ){
    // Here below your product list
    $products_ids = array('11', '12', '13', '14', '15','16');
    $found = false;

    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        if ( in_array($item->product_id(), $products_ids) ) {
            $found = true;
            break;
        }
    }

    if ( $found ) {
        // HERE do your action
    }
}

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


相关:How to get WooCommerce order details