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

Php 对于已完成状态的WooCommerce订单上的特定产品,执行操作,php,wordpress,woocommerce,product,orders,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 (

在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;

尝试以下每次订单处于“完成”状态时都会触发的操作,检查当前订单是否有来自您定义的ID的特定产品,从而允许您执行操作:

add_action('woocommerce_order_status_completed', 'action_on_order_status_completed', 10, 2 );
function action_on_order_status_completed( $order_id, $order ){
    // Here below define your product id(s)
    $products_ids = array('11', '12', '13', '14', '15','16');
    $found = false; // Initializing
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        if ( array_intersect([$item->get_product_id(), $item->get_variation_id()], $products_ids) ) {
            $found = true;
            break; // Stop the loop
        }
    }
    
    if ( $found ) {
        // HERE do your action
    }
}
代码进入活动子主题(或活动主题)的functions.php文件。测试和工作



相关:

尝试以下每次订单处于“完成”状态时都会触发的操作,检查当前订单是否具有定义ID中的特定产品,从而允许您执行操作:

add_action('woocommerce_order_status_completed', 'action_on_order_status_completed', 10, 2 );
function action_on_order_status_completed( $order_id, $order ){
    // Here below define your product id(s)
    $products_ids = array('11', '12', '13', '14', '15','16');
    $found = false; // Initializing
    
    // Loop through order items
    foreach ( $order->get_items() as $item ) {
        if ( array_intersect([$item->get_product_id(), $item->get_variation_id()], $products_ids) ) {
            $found = true;
            break; // Stop the loop
        }
    }
    
    if ( $found ) {
        // HERE do your action
    }
}
代码进入活动子主题(或活动主题)的functions.php文件。测试和工作



相关:

你的问题是什么?是否有任何代码不可用?此代码可用,但尚未完成。我还需要一个条件(如果订单已完成),否则客户可以执行该操作,但付款未完成。您的问题是什么?是否有任何代码不可用?此代码可用,但尚未完成。我还需要一个条件(如果订单已完成),否则客户端可以执行该操作,但付款未完成。我尝试了此代码,但问题是我必须显示自定义页面的一部分,并且无法从该页面访问$found变量。我试图将该变量声明为全局变量。但仍然不起作用,并在该页面中插入此代码,但结果是相同的。我尝试使用此代码回送/打印\r/var\u转储操作,但没有任何结果。我仔细检查了产品id,订单就完成了:(@EusebiuBalan)该代码不输出任何内容,它只允许执行一个操作,比如更新一些数据,触发另一个函数……按照我的建议提出一个新问题,包括一个指向此答案的链接,并解释您需要做什么,以及更多的细节和上下文。然后在此处通知我。好的,谢谢!我向她发布了另一个问题e:/questions/56274545/对于woocommerce订单上状态更改已完成的特定产品,informI尝试了此代码,但问题是我必须显示自定义页面的一部分,并且无法从该页面访问$found变量。我尝试将该变量声明为全局变量。但仍然不起作用,并在该页面中插入此代码,但结果是一样的。我尝试使用此代码回显/打印\r/var\u转储操作,但什么都没有。我仔细检查了产品id,订单完成了:(@EusebiuBalan)该代码不输出任何内容,它只允许执行一个操作,比如更新一些数据,触发另一个函数……按照我的建议提出一个新问题,包括一个指向此答案的链接,并解释您需要做什么,以及更多的细节和上下文。然后在此处通知我。好的,谢谢!我向她发布了另一个问题e:/questions/56274545/针对已完成状态更改通知的woocommerce订单上的特定产品