Intereting Posts
Вывод заголовка сообщения без кодирования Как я могу получить страницу или почтовый язык, когда я использую wpml? Создание экземпляра wp_editor с пользовательскими кнопками tinyMCE WordPress Customizer: передача переменных в PreviewUrl Не показывать сообщение мета если пусто Как переопределить функцию двадцатьten_comment Многоузловая установка, объединяющая поддомены и подкаталоги Microsoft Security Essentials блокирует мой сайт WordPress в IE11 Расширенные пользовательские поля Поле изображения объекта Post не отображается в пользовательском типе сообщений single.php Для чего WP генерирует миниатюры? Многопользовательская с двумя разными темами Как вы отображаете сообщения в динамической таблице? Измените редактор tinyMCE, чтобы разрешить маркированный контент при вставке из Word Как не загружать таблицу стилей и как загрузить вторую таблицу стилей на странице Переназначьте пользователей, не являющихся администраторами, из wp-admin / index.php (страница главной панели) в wp-admin / profile.php

Как изменить роль пользователя с помощью hook

Я создал определенное пользовательское поле, поэтому я могу управлять своими пользователями как дилером на своем веб-сайте. Теперь моя проблема связана с этой ролью пользователя, я хочу сделать что-то в моей функции.php, чтобы проверить, не являются ли мои настраиваемые поля пустыми, поэтому роль пользователя может измениться на Дилера, иначе пусть будет простым пользователем.

Я надеюсь, что кто-то может помочь .

function fb_add_custom_user_profile_fields( $user ) { ?> <h3 id="dealer_button" ><?php _e(' DEALER SECTION ', 'racecar.ch'); ?></h3> <div id="dealerpackage"></div> <table class="form-table"> <tr> <th> <label for="address"><?php _e('NR. OF FEATURED PACKAGE ', 'racecar.ch'); ?> </label></th> <td> <input type="text" name="feature_package" id="feature_package" value="<?php echo esc_attr( get_the_author_meta( 'feature_package', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e('Please enter number of featured packages.', 'Racecar.ch'); ?></span> </td> </tr> <tr> <th> <label for="address"><?php _e('NR. OF PREMIUM PACKAGE ', 'racecar.ch'); ?> </label></th> <td> <input type="text" name="premium_package" id="premium_package" value="<?php echo esc_attr( get_the_author_meta( 'premium_package', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e('Please enter number of premium packages.', 'Racecar.ch'); ?></span> </td> </tr> <!-- <tr> <th> <label for="address"><?php _e(' Dealer Contact URL ', 'racecar.ch'); ?> </label></th> <td> <input type="text" name="dealer_url" id="dealer_url" value="<?php echo esc_attr( get_the_author_meta( 'dealer_url', $user->ID ) ); ?>" class="regular-text" /><br /> <span class="description"><?php _e('Please enter the url of contact form .', 'Racecar.ch'); ?></span> </td> </tr> --> </table> 

  function fb_save_custom_user_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return FALSE; update_usermeta( $user_id, 'feature_package', $_POST['feature_package'] ); update_usermeta( $user_id, 'premium_package', $_POST['premium_package'] ); //update_usermeta( $user_id, 'dealer_url', $_POST['dealer_url'] ); } add_action( 'show_user_profile', 'fb_add_custom_user_profile_fields',100 ); add_action( 'edit_user_profile', 'fb_add_custom_user_profile_fields',100); add_action( 'personal_options_update', 'fb_save_custom_user_profile_fields',100 ); add_action( 'edit_user_profile_update', 'fb_save_custom_user_profile_fields',100 ); 

Solutions Collecting From Web of "Как изменить роль пользователя с помощью hook"

Пожалуйста, отредактируйте свою функцию и добавьте код, используемый ниже, для добавления роли пользователя в functions.php

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

 add_action( 'profile_update', 'my_profile_update', 10, 2 ); function my_profile_update( $user_id, $old_user_data ) { // here you need to update your required conditions, ie: check if meta values are set or not. I haven't checked your meta values but its supposed to like condition which is written in if condition, otherwise thr role update will work but take care of your condition if(get_the_author_meta( "feature_package", $user_id ) && get_the_author_meta( "premium_package", $user_id )){ $u = new WP_User( $user_id ); $u->set_role('author'); // please replace with your required role ie: delar }else{ $u = new WP_User( $user_id ); $u->set_role('subscriber'); } } 

WP_User класс

Для получения более подробной информации, пожалуйста, следуйте ссылкам ниже:

Разработчик profile_update

code_update codex

Просто для объяснения, что выше код будет делать. Когда любой пользователь обновит свой профиль. Условие проверяет, установлены ли значения в пользовательских полях пользователя, тогда роль пользователя будет изменена в соответствии с переданным значением, таким как «автор» в этом примере.

Благодаря!