【发布时间】:2019-07-18 15:16:24
【问题描述】:
我需要为我最近注册的用户添加一个新角色(购买我的四种特定订阅产品中的任何一种)。到目前为止,每个最近注册的用户(购买订阅产品的用户)都会获得订阅者角色。如果他们购买我的 4 种目标订阅产品中的任何一种,我希望他们成为订阅者 + 广告商。
我尝试使用 woocommerce_order_status_completed、woocommerce_order_status_processing 和 woocommerce_order_status_changed 钩子,但它们都不能使用我的代码。
我已经多次修改了这些钩子中的函数和代码,但没有什么特别的。
到目前为止,我一直在使用这个代码。
add_action( 'woocommerce_order_status_completed', 'so_29647785_convert_customer_role' );
function so_29647785_convert_customer_role( $order_id ) {
$order = new WC_Order( $order_id );
if ( $order->user_id > 0 ) {
foreach ( $order->get_items() as $order_item ) {
if( 4008 == $order_item[ 'product_id' ] ) {
$user = new WP_User( $order->user_id );
// Add new role
$user->add_role( 'advertiser' );
}
}
}
}
我将不胜感激任何帮助或跟踪。
我也尝试过此代码,它有助于创建同时具有订阅者和广告商角色的用户,但在我的情况下我不能这样做。因为只有当用户购买我的四种目标订阅产品时,我才需要用户同时注册订阅者和广告商角色。虽然此代码将订阅者和广告商都添加到每个新用户,无论他们选择什么产品。
add_filter('woocommerce_new_customer_data', 'bbloomer_assign_custom_role', 10, 1);
function bbloomer_assign_custom_role($args) {
$args['role'] = 'advertiser';
return $args;
}
任何帮助将不胜感激!
【问题讨论】:
标签: php wordpress woocommerce user-roles woocommerce-subscriptions