use*_*613 6 php wordpress subscription woocommerce woocommerce-subscriptions
我正在使用 WooCommerce 订阅插件,并且尝试获取给定 wc_subscription 的客户或用户 ID。
这是我一直在使用但失败的代码:
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);
...
}
Run Code Online (Sandbox Code Playgroud)
我以为$wc_subscription->customer_user
会有用户 ID,但它是空的。实际上阻止了代码继续。
我怎样才能获得用户ID $wc_subscription
?
\n\n由于类WC_Subscription 方法是从
\nWC_Abstract_Order
和WC_Order
类继承的,因此您可以get_user_id()
这样使用方法:Run Code Online (Sandbox Code Playgroud)\n$userid = $wc_subscription->get_user_id();\n
此代码经过测试并可与 WC_Subscription 实例对象一起使用
\n所以你的代码将是:
\nadd_action( \'woocommerce_scheduled_subscription_trial_end\', \'registration_trial_expired\', 100 );\nfunction registration_trial_expired( $wc_subscription ) {\n mail("example@gmail.com", "Expired", "Someone\'s order has expired");\n $userid = $wc_subscription->get_user_id(); // <= HERE\n mail("example@gmail.com", "Expired", "Someone\'s order has expired with customer".$userid);\n // ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n\n更新 (关于OP的评论)
\n
因为参数$wc_subscription
是订阅 ID (而不是订阅对象)。
所以我将代码更改为:
\nadd_action( \'woocommerce_scheduled_subscription_trial_end\', \'registration_trial_expired\', 100 );\nfunction registration_trial_expired( $subscription_id ) {\n\n // Get an occurrence of the WC_Subscription object\n $subscription = wcs_get_subscription( $subscription_id );\n \n // Get the user ID (or customer ID)\n $user_id = $subscription->get_user_id();\n\n // The email adress\n $email = \'example@gmail.com\';\n\n // The theme domain (replace with your theme domain for localisable strings)\n $domain = \'woocommerce\';\n \n mail( $email, \'Expired\', __("Someone\xe2\x80\x99s order has expired", $domain);\n mail( $email, \'Expired\', __("Someone\xe2\x80\x99s order has expired with customer", $domain) . $user_id );\n\n // ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n
小智 1
检索当前用户对象 (WP_User)。使用全局变量 $current_user 的 get_currentuserinfo() 的包装。
wp_get_current_user();
Run Code Online (Sandbox Code Playgroud)
但它可能已被弃用,因此您可以从中派生
$userdata = WP_User::get_data_by( $field, $value );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7697 次 |
最近记录: |