Мне нужно добавить новую роль для моего недавно зарегистрированного пользователя (при покупке любого из моих четырех продуктов по подписке).До сих пор каждый недавно зарегистрированный пользователь (те, кто покупает продукт по подписке) получает роль подписчика.Хотя я хочу, чтобы они были подписчиками + рекламодателями, если они купят какой-либо из моих 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;
}
Любая помощь будет высоко оценена!