Intereting Posts
Включая пользовательские поля в поиске? Сведения о многостраничном сайте WordPress, домене и многоязычности с использованием WPML meta_key & meta_value не работает с get_pages и пользовательской таксономией Определение размера поля textarea в пользовательских метабоксах Миниатюры для пользовательских сообщений, которые не отображаются в запросе Изменение размера старых миниатюр изображений Как я могу отобразить форму контакта для внеодных продуктов в WooCommerce? Импорт большого количества RSS-каналов Понимание и использование обменов в сообщениях Пользовательский пост с более чем одной пользовательской таксономией ОШИБКА: файлы cookie заблокированы из-за неожиданного выхода – окончательное решение Установка multisite в домене с существующими установками wordpress для поддиректории Как отключить комментарии для страниц, но не сообщений? Посты запросов для каждой разделяемой категории (Похожие сообщения) изменение типа сообщения в запросе цикла

После добавления функции роли редактора и вкладчика

** ВОССТАНОВЛЕНИЕ **

Я создаю мост. Работа включает установку WordPress по умолчанию и плагин для подключения форума и WordPress. Форум предоставляет всю информацию об учетной записи. Вторичная группа пользователей соответствует роли WP. Теперь я пытаюсь получить «роль», выбранную в параметрах для этого зарегистрированного пользователя, и add_role для строки. Вставка wp_die показывает, что правильная роль предоставляется зарегистрированному пользователю. Однако добавляются неправильные возможности. Все получают админ.

// returns an array var_dump( $XF->options['xf_user_role'] ); //returns string() "role such as administrator" (in quotes) var_dump( $XF->options['xf_user_role'][$user_group] ); 

** ОБНОВЛЕНО **:

Вот последний частичный код. Нет причин действительно показывать filluserData

 class XF_User_Data { public static function fillUserData($visitor, $classObj, $user_id) { // doing something and calls set_user_roles } public static function set_user_roles( &$classObj, $user_group_id, $secondary_group_ids ) { /** * Function set_user_roles(&$classObj, $user_group_id, $secondary_group_ids) * * This function sets the current user role based on the secondary group */ global $XF, $wp_roles; $user_groups = explode( ',', $secondary_group_ids ); $user_groups[] = $user_group_id; /** * Loop through the user_roles and find the WP role equivalent for each */ $user_roles = array(); foreach( $user_groups as $user_group ) { $user_roles[] = $XF->options['xf_user_role'][$user_group]; /** * wp_die( 'This is the role:' . var_dump( $XF->options['xf_user_role'] ) ); * * Returns: * * array(7) { [3]=> string(13) "administrator" [4]=> string(6) "author" [2]=> string(10) "subscriber" [1]=> string(10) "subscriber" [5]=> string(6) "author" [7]=> string(11) "contributor" [6]=> string(6) "editor" } */ /** * wp_die( var_dump( $XF->options['xf_user_role'][$user_group] ) ); * * Returns for user Ellie who has secondary group related to author * string(6) "author" * * Returns Albert who has secondary group set to editor * string(6) "editor" * * Returns Pascal who has secondary group related to contributor * string(11) "contributor" * * Returns Gracie NO secondary group for registered members. * NULL * */ $new_roles = $XF->options['xf_user_role'][$user_group]; // wp_die( var_dump( $XF->options['xf_user_role'][$user_group] ) ); if( $new_roles == 'administrator' ) { $capabilities = array ( 'activate_plugins','delete_others_pages','delete_others_posts','delete_pages','delete_plugins','delete_posts','delete_private_pages','delete_private_posts','delete_published_pages','delete_published_posts','edit_dashboard','edit_files','edit_others_pages','edit_others_posts','edit_pages','edit_posts','edit_private_pages','edit_private_posts','edit_published_pages','edit_published_posts','edit_theme_options','export','import','list_users','manage_categories','manage_links','manage_options','moderate_comments','promote_users','publish_pages','publish_posts','read_private_pages','read_private_posts','read','remove_users','switch_themes','upload_files','create_product' ); $user_id = $XF->visitor->get('user_id'); $user = new WP_User( $user_id ); foreach ( $capabilities as $cap ) { $user->add_cap( $cap ); } break; } elseif( $role == 'editor' ) { $capabilities = array ( 'delete_others_pages','delete_others_posts','delete_pages','delete_post','delete_private_pages','delete_private_posts','delete_published_pages','delete_published_posts','edit_others_pages','edit_others_posts','edit_pages','edit_posts', 'edit_private_pages','edit_private_posts','edit_published_pages','edit_published_posts','manage_categories','manage_links','moderate_comments','publish_pages','publish_posts','read','read_private_pages','read_private_posts' ); $user_id = $XF->visitor->get('user_id'); $user = new WP_User( $user_id ); foreach ( $capabilities as $cap ) { $user->add_cap( $cap ); } break; } elseif( $new_roles == 'author' ) { $capabilities = array( 'delete_posts', 'delete_published_posts','edit_posts', 'edit_published_posts','publish_posts', 'read', 'upload_files','upload_files' ); $user_id = $XF->visitor->get('user_id'); $user = new WP_User( $user_id ); foreach ( $capabilities as $cap ) { $user->add_cap( $cap ); } break; } elseif( $new_roles == 'contributor' ) { $capabilities = array( 'delete_posts', 'edit_posts', 'read' ); $user_id = $XF->visitor->get('user_id'); $user = new WP_User( $user_id ); foreach ( $capabilities as $cap ) { $user->add_cap( $cap ); } break; } elseif( $new_roles == '' || $new_roles == NULL || $new_roles == 'subscriber' ) { $capabilities = array( 'read' ); $user_id = $XF->visitor->get('user_id'); $user = new WP_User( $user_id ); foreach ( $capabilities as $cap ) { $user->add_cap( $cap ); } break; } } } public static function create_new_wp_user( $new_role, $user_id ) { if( null == username_exists( $user_id ) ) { ini_set('memory_limit', '128M'); // Generate the password and create the user $password = wp_generate_password( 12, false ); $user_id = wp_create_user( $email_address, $password, $email_address ); // Set the nickname wp_update_user( array( 'ID' => $user_id, 'nickname' => $email_address ) ); // Set the role $user = new WP_User( $user_id ); $user->set_role( $new_role ); // Email the user wp_mail( $email_address, 'Welcome!', 'Your Password: ' . $password ); return; } // end if } } 

Неправильные возможности добавляются в роли пользователя. Например, каждый получает возможности администратора.

Что не так с этим кодом?

PS. Я неофит и знаю достаточно, чтобы быть опасным;)