source

WooCommerce 구독에서 사용자 ID 가져오기

topadmin 2023. 9. 17. 20:18

WooCommerce 구독에서 사용자 ID 가져오기

WooCommerce Subscriptions 플러그인을 사용하고 있으며 지정된 wc_subscription의 고객 또는 userid를 가져오려고 합니다.

사용해 왔지만 실패한 코드는 다음과 같습니다.

add_action( 'woocommerce_scheduled_subscription_trial_end', 'registration_trial_expired', 100 );
function registration_trial_expired( $wc_subscription ) {
    mail("example@gmail.com", "Expired", "Someone's order has expired");
    $userid = $wc_subscription->customer_user;
    mail("example@gmail.com", "Expired", "Someone's order has expired with customer".$userid);
...
}

내 생각에는 말이지…$wc_subscription->customer_user사용자 ID가 있지만 비어 있습니다.사실 코드가 계속되는 것을 막습니다.

사용자 ID를 얻으려면 어떻게 해야 합니까?$wc_subscription?

클래스 WC_Subscription 메서드는 및 클래스에서 상속되므로 메서드를 다음과 같이 사용할 수 있습니다.

$userid = $wc_subscription->get_user_id();

이 코드는 테스트되고 WC_Subscription 인스턴스 개체와 함께 작동합니다.

코드는 다음과 같습니다.

add_action( 'woocommerce_scheduled_subscription_trial_end', 'registration_trial_expired', 100 );
function registration_trial_expired( $wc_subscription ) {
    mail("example@gmail.com", "Expired", "Someone's order has expired");
    $userid = $wc_subscription->get_user_id(); // <= HERE
    mail("example@gmail.com", "Expired", "Someone's order has expired with customer".$userid);
    // ...
}

갱신하다 (OP의 의견에 따라)

인수서브스크립션 개체가 아닌 서브스크립션 ID였기 때문입니다.

그래서 코드를 다음과 같이 변경했습니다.

add_action( 'woocommerce_scheduled_subscription_trial_end', 'registration_trial_expired', 100 );
function registration_trial_expired( $subscription_id ) {

    // Get an occurrence of the WC_Subscription object
    $subscription = wcs_get_subscription( $subscription_id );
    
    // Get the user ID (or customer ID)
    $user_id = $subscription->get_user_id();

    // The email adress
    $email = 'example@gmail.com';

    // The theme domain (replace with your theme domain for localisable strings)
    $domain = 'woocommerce';
    
    mail( $email, 'Expired', __("Someone’s order has expired", $domain);
    mail( $email, 'Expired', __("Someone’s order has expired with customer", $domain) . $user_id );

    // ...
}

WC_Subscription은 WC_ORDER의 확장 버전이므로 WC_ORDER와 동일한 호출을 사용할 수 있습니다.

코드가 변조되었습니다.

 add_action( 'woocommerce_scheduled_subscription_trial_end', 'registration_trial_expired', 100 );
 function registration_trial_expired( $wc_subscription ) 
    {
    $order_billing_email = $wc_subscription->get_billing_email(); 
    $User      = get_user_by( 'email', $order_billing_email );             /
    $FirstName = $User->first_name;
    $LastName  = $User->last_name;
    $UserId    = $User->ID;
    }

현재 사용자 개체(WP_User)를 검색합니다.글로벌 변수 $current_user를 사용하는 get_currentuserinfo()의 래퍼입니다.

wp_get_current_user();

그러나 다음에서 도출할 수 있도록 감가상각될 수 있습니다.

$userdata = WP_User::get_data_by( $field, $value );

언급URL : https://stackoverflow.com/questions/43108453/get-the-user-id-in-woocommerce-subscriptions