Пользователь без электронной почты?
При создании пользователя в WordPress требуется указать адрес электронной почты. Сайт, над которым я работаю, требует, чтобы пользователи оставались анонимными (это часть исследовательского проекта), и я считаю email идентифицирующей информацией. Пользователи будут добавляться вручную, поэтому email не требуется для подтверждения учетных записей или предотвращения спам-регистраций.
Придется ли мне указывать фиктивный адрес электронной почты для каждой учетной записи, или есть способ оставить это поле пустым?

Это возможно, просто не так легко сделать через страницу пользователей без некоторых ухищрений.
Функция WordPress wp_create_user позволяет добавлять пользователей без email-адресов, поэтому небольшой пользовательский плагин для принятия логина и пароля, а также вызов wp_insert_user
или wp_update_user
должны сработать. К сожалению, у меня нет времени написать код для вас, но, возможно, это укажет вам направление.
$userdata = array ('user_login' => 'someuser', 'user_pass' => 'swordfish');
$new_user_id = wp_update_user( $userdata );
Обновление для тех, кто ищет решение через REST-API: К сожалению, это невозможно через REST-API. Email обязателен. Смотрите: https://developer.wordpress.org/rest-api/reference/users/#create-a-user

Спасибо! Я создавал пользователей с помощью wp_insert_user() и, увидев, что столбец email в базе данных не допускает NULL, предположил, что проблема в отсутствии email-адреса. После того как вы указали, что API WordPress не требует email, я обнаружил истинную причину проблемы.

Используя WordPress 4.7.2, я решил эту проблему с помощью следующих хуков:
// Это подавит ошибки пустого email при отправке формы пользователя
add_action('user_profile_update_errors', 'my_user_profile_update_errors', 10, 3 );
function my_user_profile_update_errors($errors, $update, $user) {
$errors->remove('empty_email');
}
// Это отключит javascript валидацию для поля ввода email
// Также удалит текст '(обязательно)' в метке
// Работает для форм нового пользователя, профиля пользователя и редактирования пользователя
add_action('user_new_form', 'my_user_new_form', 10, 1);
add_action('show_user_profile', 'my_user_new_form', 10, 1);
add_action('edit_user_profile', 'my_user_new_form', 10, 1);
function my_user_new_form($form_type) {
?>
<script type="text/javascript">
jQuery('#email').closest('tr').removeClass('form-required').find('.description').remove();
// По умолчанию снимаем галочку опции отправки email новому пользователю
<?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
jQuery('#send_user_notification').removeAttr('checked');
<?php endif; ?>
</script>
<?php
}

Согласно документации WordPress, функция wp_create_user
также позволяет добавлять пользователей без электронной почты, так как этот параметр является необязательным. Всё, что вам нужно сделать — указать уникальное имя пользователя и пароль.

Это довольно старый вопрос, но он до сих пор актуален.
В любом случае, у @Milo определенно была правильная идея.
Вот что я использую, и это отлично работает. Это очень удобно, когда вы хотите создавать пользователей, но предпочитаете держать бэкенд WordPress под замком. Например, если у вас есть блог, и вы предпочитаете, чтобы авторы контента присылали вам свои работы, это позволяет создать для них пользователя, фактически не давая им доступ. Или если вы предпочитаете вести блог под псевдонимом. Это также полезно для тестирования или, предположим, для тех "сомнительных" личностей, которые хотят создать кучу фальшивых пользователей для своего сайта (вы знаете, кто вы).
Добавьте это в functions.php временно или используйте с полезным плагином типа Code Snippets.
function wpse_22754_insert_new_user() {
$user_data = array(
'ID' => '', // автоматически создается
'user_pass' => 'swordfish',
'user_login' => 'someuser',
'user_nicename' => 'Some User',
'user_email' => '',
'display_name' => 'John',
'nickname' => 'jsmith',
'first_name' => 'John',
'last_name' => 'John',
'user_url' => '',
'user_registered' => '2015-06-26 10:55:55', // оставьте пустым для авто
'role' => get_option('default_role') // администратор, редактор, подписчик, автор и т.д.
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'wpse_22754_insert_new_user' );
Если вы хотите обновлять пользователей из бэкенда после их создания, добавьте это, и вы избежите ошибки/предупреждения.
function wpse_22754_empty_email_error( $arg ) {
if ( !empty( $arg->errors['empty_email'] ) ) unset( $arg->errors['empty_email'] );
}
add_action( 'user_profile_update_errors', 'wpse_22754_empty_email_error' );
Если вы предпочитаете использовать плагин, этот, скорее всего, справится с задачей:

Плагин "Import Users from CSV" позволяет создавать пользователей без указания адреса электронной почты. Я добавил их следующим образом...
last_name,first_name,display_name,user_login
Gamble,Bill,Bill Gamble,BillGamble
Наш клуб использует базу данных wp_users WordPress, но нам необходимо хранить информацию даже о тех участниках, у которых нет электронной почты.

Я нашел способ на YouTube, когда искал "как создать пользователей без email в WordPress"!
- Установите плагин "Code Snippets"
- Выберите "Добавить новый" в этом плагине
- Придумайте название, например "Код без обязательного email"
4.Вставьте этот код:
// Это подавит ошибки пустого email при отправке формы пользователя
add_action('user_profile_update_errors', 'my_user_profile_update_errors', 10, 3);
function my_user_profile_update_errors($errors, $update, $user){
$errors->remove('empty_email');
}
// Это уберет javascript валидацию обязательности поля email
// Удалит текст '(обязательно)' в метке
// Работает для новых пользователей, профиля и формы редактирования
add_action('user_new_form', 'my_user_new_form', 10, 1);
add_action('show_user_profile', 'my_user_new_form', 10, 1);
add_action('edit_user_profile', 'my_user_new_form', 10, 1);
function my_user_new_form($form_type) {
?>
<script type="text/javascript">
jQuery('#email').closest('tr').removeClass('form-required').find('.description').remove();
// Снятие галочки отправки уведомления новому пользователю по умолчанию
<?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
jQuery('#send_user_notification').removeAttr('checked');
<?php endif; ?>
</script>
<?php
}
- Выберите "Выполнять только в админ-панели" и нажмите "Сохранить изменения и активировать"
- Теперь проверьте - это работает!
