首页 > 解决方案 > 在 WooCommerce 中取消订阅后,是否有办法取消学生在 LifterLMS 中的注册?

问题描述

我正在尝试编写一个 php 代码,以使系统在用户取消订阅 LifterLMS 中的课程时自动取消注册学生。这也意味着他们不必继续向 WooCommerce 支付费用。有什么办法可以做到这一点吗?我写了一个要添加到functions.php的php代码,但它不起作用。

add_action( 'llms_unenroll_student', 'unenrol_when_cancelled' );
function unenrol_when_cancelled(){
    $user_id = get_current_user_id();
    $user_subscriptions = wcs_get_users_subscriptions($user_id);

    
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => $user_id,
        'post_type'   => 'shop_order', // WC orders post type
        'post_status' => 'wc-cancelled' // Only orders with status "cancelled"
    ) );
    
    $subscriptionlist = [];
    foreach ($customer_orders as $subscription){
        $subscriptionlist[] = $subscription->get_id(); 
      }

    foreach ($subscriptionlist as $subscriptionid){
        if ($subscriptionid == '3400' || $subscriptionid == '74'){ 
            llms_unenroll_student($user_id, 7140, $new_status, $trigger);
            llms_unenroll_student($user_id, 7099, $new_status, $trigger);
            llms_unenroll_student($user_id, 6487, $new_status, $trigger);
            llms_unenroll_student($user_id, 6388, $new_status, $trigger);

            llms_unenroll_student($user_id, 7061, $new_status, $trigger);
            llms_unenroll_student($user_id, 7014, $new_status, $trigger);
            llms_unenroll_student($user_id, 5580, $new_status, $trigger);
            llms_unenroll_student($user_id, 5167, $new_status, $trigger);

            llms_unenroll_student($user_id, 6992, $new_status, $trigger);
            llms_unenroll_student($user_id, 6962, $new_status, $trigger);
            llms_unenroll_student($user_id, 6895, $new_status, $trigger);
            llms_unenroll_student($user_id, 6729, $new_status, $trigger);
        } elseif ($subscriptionid == '3136'){
            llms_unenroll_student($user_id, 5665, $new_status, $trigger);
        }
    }
}

标签: wordpresswoocommerce

解决方案


推荐阅读