Intereting Posts
Проблема пользовательского входа и регистрации в WordPress? Функция сканирования изображения, прикрепления его к сообщению, установка его как признака Использовать oEmbed для статического html Является ли использование WP Transients для сохранения внешних данных для плагина лучшим / правильным способом? Buddypress ajax проблема после добавления новых групп sub nav Сортировка типа персонализированного типа по идентификатору категории, а затем название сообщения WordPress 3.5 Media Uploader – разрешает только 1 загрузку и определенные типы файлов Flexslider не работает для моей пользовательской темы WordPress Есть ли способ предотвратить изменение автора, когда редактор / администратор редактирует сообщение? Как получить единственный крючок из wp_head ()? Интеграция пользовательской базы данных с помощью WordPress Пользовательская функция санитарии Запуск оповещения в Настройщике? Как добавить элемент управления фонового изображения в элементы управления администратором страницы? Удаленно определить версию установки WordPress? Обычный пользовательский Shortcode не работает

Регистрация в WordPress по ролям

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

Я знаю, что это подключаемая функция, и вы должны переопределить ее в плагине, начиная с этого поста, но не обрабатывает разные письма по ролям. Не уверен, могу ли я создать оператор if, который говорит, если текущий пользователь является ролей, потому что я не уверен, что текущий пользователь входит в фактор, когда создается суц, если это имеет смысл. Любое направление на этом было бы очень признательно, спасибо!

Прокрутите вниз немного, большинство из них – это код WordPress по умолчанию, но вы должны добавить все в свой плагин, иначе вы можете его сломать! Я также добавил несколько полезных фрагментов ниже. Скопируйте их в один и тот же плагин.

<?php /* * Plugin Name: Emails * Plugin URI: http://www.your-site.com * Description: Different registration email for different roles * Author: Your name * Author URI: http://www.your-site.com */ // Registration email if( ! function_exists( 'wp_new_user_notification' ) ) { function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) { if ( $deprecated !== null ) { _deprecated_argument( __FUNCTION__, '4.3.1' ); } global $wpdb, $wp_hasher; $user = get_userdata( $user_id ); // The blogname option is escaped with esc_html on the way into the database in sanitize_option // we want to reverse this for the plain text arena of emails. $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // Message that gets sent to admin if new user registers $message = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n"; $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n"; $message .= sprintf(__('Email: %s'), $user->user_email) . "\r\n"; @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message); // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notifcation. if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) { return; } // Generate something random for a password reset key. $key = wp_generate_password( 20, false ); /** This action is documented in wp-login.php */ do_action( 'retrieve_password_key', $user->user_login, $key ); // Now insert the key, hashed, into the DB. if ( empty( $wp_hasher ) ) { require_once ABSPATH . WPINC . '/class-phpass.php'; $wp_hasher = new PasswordHash( 8, true ); } $hashed = time() . ':' . $wp_hasher->HashPassword( $key ); $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) ); /////////////////////////////////////////////////////////////////// // Your code starts here, rest of it is WordPress default code // /////////////////////////////////////////////////////////////////// // First role if( $user->roles == 'some_vip_role' ) { $email_subject = 'Welcome VIP!'; $message = 'message content for VIP'; } // Second role else if( $user->roles == 'some_other_role' ) { $email_subject = 'Welcome other role!'; $message = 'message content for other role'; } // And so on.. // Send email wp_mail( $user->user_email, $email_subject, $message ); //////////////////////////////////////////////////////////// // Make sure to add this link to each $message // // This is where user can set his/her first password // //////////////////////////////////////////////////////////// $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n"; } } 

  • Играйте с ролями и убедитесь, что все работает правильно.
  • Также добавьте else statement в конец и используйте общие сообщения $email_subject и $message если вы добавите новую роль в будущем и забудьте изменить плагин.
  • Список свойств, который имеет объект $user , можно найти здесь .
  • Не забудьте добавить ссылку, в которой пользователь должен установить пароль!
  • Опять же: тест, тест и тест – сделать несколько фиктивных пользователей с разными ролями, чтобы проверить его.

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

 // Change "from" email add_filter( 'wp_mail_from', 'new_mail_from_name' ); function new_mail_from_name() { return 'hello@you-site.com'; } // Change "from" name add_filter( 'wp_mail_from_name', 'new_mail_from' ); function new_mail_from() { return 'Your site'; } 

Счастливое кодирование и дайте мне знать, как это сработало для вас.