Intereting Posts
Поместите категории и теги в раскрывающийся список, Категории как параметры и теги в качестве групп опций Почему apply_filters возвращают непустую строку, когда возвращаемое значение пусто? неавторизованные пользователи не могут отправить форму Как я могу автоматически добавлять сообщение с латинскими символами? Увеличение неудачных попыток входа в систему, атаки с использованием грубой силы? Запрос метаданных при сохранении данных в виде массива? Любой способ использовать собственный параметр для встраивания vimeo без использования iframe? Создание настраиваемого типа сообщения для вставки предустановленного содержимого в сообщение и страницы? Очистить вывод, добавленный через wp_head () Multisite – Global CPT – советы? Как сохранить поля имени электронной почты для комментариев? WPAlchemy – флажки не сохраняются Пользовательское меню: имена ссылок Просмотрите семейное древо и найдите избранное изображение Определение «текущей_страницы» в пользовательских меню WordPress

Изменение второй роли пользователя при обновлении / понижении уровня членства – s2member

вот что я хочу достичь:

s2_member_level0 имеет вторую роль «клиент» – при обновлении учетной записи с помощью короткого кода, предоставленного s2member, учетная запись должна обновиться до s2member_level1 и изменить ее вторую роль на «поставщика»,

а также

s2_member_level1 имеет вторую роль «поставщик» – при понижении учетной записи по короткому коду, предоставленному s2member, учетная запись должна перейти на s2member_level0 и изменить вторую роль на «клиент»,

Я устанавливаю роли для разных учетных записей, пока они активируются этой функцией в моей дочерней теме:

add_action( 'bp_core_activated_user', 'add_secondary_role_new', 10, 1 ); function add_secondary_role_new( $user_id ) { global $members_template; $user = get_user_by('id', $user_id); if (user_can($members_template->member->id,'s2member_level1')){ $user->add_role('vendor'); } else{ $user->add_role('customer'); } } 

и я хочу изменить роли пользователя с помощью этих функций, которые в основном обновляют пользовательские данные в базе данных:

 function change_role_while_upgrade_account(){ global $members_template; $user = get_user_by('id', $user_id); $user = wp_update_user(array('ID'=>$user,'role'=>'vendor')); } function change_role_while_downgrade_account(){ global $members_template; $user = get_user_by('id', $user_id); $user = wp_update_user(array('ID'=>$user,'role'=>'vendor')); } 

Поэтому возникает вопрос: как я могу использовать эти функции (если они работают) с короткими кодами, которые генерирует член s2? Кто-нибудь имеет ключ и может помочь понять это?

мои короткие коды для обновления:

 [s2Member-PayPal-Button modify="1" level="1" ccaps="" desc="Upgrading Account to Premium" ps="paypal" lc="" cc="EUR" dg="0" ns="1" custom="www.netz-mitteldeutschland.de" ta="0" tp="0" tt="Y" ra="2799.00" rp="1" rt="Y" rr="1" rrt="" rra="1" image="default" output="button" /] 

shortcode для unsubscriping:

 [s2Member-PayPal-Button cancel="1" image="default" output="anchor" /] 

Спасибо за ваши ответы

Solutions Collecting From Web of "Изменение второй роли пользователя при обновлении / понижении уровня членства – s2member"

Я нашел решение. Вот:

 //Update Roles automatically when Membership Level changes function rb_update_user_role( $user_id) { $user = new WP_User( $user_id ); $user_meta=get_userdata($user_id); $all_role = $user_meta->roles; foreach ($all_role as $role_value){ if ($role_value === 'vendor'){ $user->remove_role( 'vendor' ); } if ($role_value === 'customer'){ $user->remove_role( 'customer' ); } if ($role_value === 's2member_level1'){ $user->remove_role( 's2member_level1' ); $role = 's2member_level1'; } if ($role_value === 'subscriber'){ $user->remove_role( 'subscriber' ); $role = 'subscriber'; } } if ( $role === 'subscriber' ) { unset($new_role); $new_role = array($role => 0 ,'customer' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } if ($role === 's2member_level1'){ unset($new_role); $new_role = array($role => 0,'vendor' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } } add_action( 'profile_update', 'rb_update_user_role', 99, 1 ); с //Update Roles automatically when Membership Level changes function rb_update_user_role( $user_id) { $user = new WP_User( $user_id ); $user_meta=get_userdata($user_id); $all_role = $user_meta->roles; foreach ($all_role as $role_value){ if ($role_value === 'vendor'){ $user->remove_role( 'vendor' ); } if ($role_value === 'customer'){ $user->remove_role( 'customer' ); } if ($role_value === 's2member_level1'){ $user->remove_role( 's2member_level1' ); $role = 's2member_level1'; } if ($role_value === 'subscriber'){ $user->remove_role( 'subscriber' ); $role = 'subscriber'; } } if ( $role === 'subscriber' ) { unset($new_role); $new_role = array($role => 0 ,'customer' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } if ($role === 's2member_level1'){ unset($new_role); $new_role = array($role => 0,'vendor' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } } add_action( 'profile_update', 'rb_update_user_role', 99, 1 ); с //Update Roles automatically when Membership Level changes function rb_update_user_role( $user_id) { $user = new WP_User( $user_id ); $user_meta=get_userdata($user_id); $all_role = $user_meta->roles; foreach ($all_role as $role_value){ if ($role_value === 'vendor'){ $user->remove_role( 'vendor' ); } if ($role_value === 'customer'){ $user->remove_role( 'customer' ); } if ($role_value === 's2member_level1'){ $user->remove_role( 's2member_level1' ); $role = 's2member_level1'; } if ($role_value === 'subscriber'){ $user->remove_role( 'subscriber' ); $role = 'subscriber'; } } if ( $role === 'subscriber' ) { unset($new_role); $new_role = array($role => 0 ,'customer' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } if ($role === 's2member_level1'){ unset($new_role); $new_role = array($role => 0,'vendor' => 1) ; update_user_meta($user_id, 'wp_capabilities', $new_role); } } add_action( 'profile_update', 'rb_update_user_role', 99, 1 );