繁体   English   中英

购买WooCommerce后自动升级Wordpress用户角色1年

[英]Auto upgrade Wordpress user role for 1 year after WooCommerce purchase

我正在寻找一种方法,在用户在我的Wordpress网站上的WooCommerce商店中购买特定项目后,将其用户角色升级一年。

购买后,我已经有适当的代码来升级用户角色,该代码位于我正在使用的主题的functions.php文件中:

add_action('woocommerce_thankyou', 'change_user_role_on_order_success');
function change_user_role_on_order_success($order_id ) {
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
$wp_user_object = new WP_User($user_id);
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
}
if ( $product_id == '686' && $wp_user_object->roles[0] != "administrator"){ // Do not change admin role
wp_update_user( array( 'ID' => $wp_user_object->ID, 'role' => "55a015e6994e2" ) );
} else
if ( $product_id == '690' && $wp_user_object->roles[0] != "administrator"){ // Do not change admin role
wp_update_user( array( 'ID' => $wp_user_object->ID, 'role' => "55a011d082d75" ) );
}
}

正如您在代码中看到的那样,如果用户购买产品ID 686,则将获得用户角色55a015e6994e2,而在购买产品ID 690时,用户将获得用户角色55a011d082d75。

一切正常。 但是,我希望用户角色在1年后恢复为角色X,并且我不知道如何完成此任务。

我希望任何具有更多Wordpress知识的人都能帮助我解决这个问题? 或指出正确的方向? 任何帮助将不胜感激。

我已经看过Expire Users插件,实际上该插件可以在x个时间段内将用户的用户角色恢复为用户角色x。 但是我不知道如何使用functions.php文件中的函数或动作来应用它。

我一直在摆弄这件事,并且能够使用user_registered函数设置新的用户注册日期。 现在的代码如下所示:

add_action('woocommerce_thankyou', 'change_user_role_on_order_success');
function change_user_role_on_order_success($order_id ) {
$today = current_time('timestamp');
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
$wp_user_object = new WP_User($user_id);
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
}
if ( $product_id == '686' && $wp_user_object->roles[0] != "administrator"){ // Do not change admin role
wp_update_user( array( 'ID' => $wp_user_object->ID, 'role' => "55a015e6994e2", 'user_registered' => $today ) );
} else
if ( $product_id == '690' && $wp_user_object->roles[0] != "administrator"){ // Do not change admin role
wp_update_user( array( 'ID' => $wp_user_object->ID, 'role' => "55a011d082d75", 'user_registered' => $today ) );
}
}

所以我想,如果我将Expire Users插件设置为在一年后自动使用户过期,它可能会成功,但没有这种运气。 过期用户插件仍将过期日期显示为用户首次注册后的一年,而不是自注册日期起的一年。 坏消息!

还有其他人有什么想法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM