Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce购买后自动升级Wordpress用户角色1年_Php_Wordpress_Woocommerce_User Roles - Fatal编程技术网

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

Php WooCommerce购买后自动升级Wordpress用户角色1年,php,wordpress,woocommerce,user-roles,Php,Wordpress,Woocommerce,User Roles,我正在寻找一种方法,在用户在WoodPress网站上的WooCommerce商店购买特定商品后,将其用户角色升级1年 我已经准备好了在购买后升级用户角色的代码,该代码位于我正在使用的主题的functions.php文件中: add_action('woocommerce_thankyou', 'change_user_role_on_order_success'); function change_user_role_on_order_success($order_id ) { $order =

我正在寻找一种方法,在用户在WoodPress网站上的WooCommerce商店购买特定商品后,将其用户角色升级1年

我已经准备好了在购买后升级用户角色的代码,该代码位于我正在使用的主题的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知识的人能在这方面帮助我?或者给我指出正确的方向?任何帮助都将不胜感激


我已经在研究这个插件,它实际上可以在x时间段后将用户的用户角色恢复为用户角色x。但是我不知道如何使用functions.php文件中的函数或操作来应用它。

我已经在这方面做了更多的工作,并且我能够使用user\u registed函数设置新的用户注册日期。代码现在如下所示:

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 user插件仍然将过期日期显示为用户首次注册后的一年,而不是注册日期后的一年。真倒霉


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

我一直在摆弄这方面的东西,我能够使用user\u registed函数设置新的用户注册日期。代码现在如下所示:

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 user插件仍然将过期日期显示为用户首次注册后的一年,而不是注册日期后的一年。真倒霉


其他人有什么想法吗?

也许是一份长期的工作?是的,我也在考虑这个问题,但我没有cron jobs的经验。你能给我指一下正确的方向吗?我应该如何使用它?也许在订单发生时安排一个活动。我不太熟悉计时工作,也许是计时工作?是的,我也在考虑这个问题,但我没有cron jobs的经验。你能给我指一下正确的方向吗?我应该如何使用它?也许在订单发生时安排一个活动。我对计时工作不太熟悉。