¿Usuario Sin Correo Electrónico?
Al crear un usuario en WordPress se requiere una dirección de correo electrónico para ese usuario. El sitio web en el que estoy trabajando requiere que los usuarios permanezcan anónimos (es parte de un estudio de investigación) y considero que el correo electrónico es un dato identificativo. Los usuarios se agregarán manualmente, por lo que no se requiere correo electrónico para confirmar cuentas o prevenir registros spam.
¿Tendré que proporcionar una dirección de correo electrónico falsa para cada cuenta, o hay alguna manera de dejar este campo en blanco?

Es posible, aunque no tan fácilmente a través de la página de Usuarios sin algunos trucos.
La función de WordPress wp_create_user
te permitirá insertar usuarios sin direcciones de correo electrónico, así que un pequeño plugin personalizado para aceptar un nombre de usuario y contraseña, y una llamada a wp_insert_user
o wp_update_user
debería funcionar para ti. Desafortunadamente no tengo tiempo para codificarlo por ti, pero quizás esto te indique una dirección.
$userdata = array ('user_login' => 'algúnusuario', 'user_pass' => 'contraseña');
$new_user_id = wp_update_user( $userdata );
Actualización para personas buscando una solución con la API REST: Desafortunadamente, esto no es posible mediante la API REST. El correo electrónico es requerido ahí. Ver: https://developer.wordpress.org/rest-api/reference/users/#create-a-user

¡Gracias! Estaba creando usuarios con wp_insert_user() y, al ver que la columna de correo electrónico está configurada para rechazar valores nulos en la base de datos, asumí que el problema era no proporcionar una dirección de correo electrónico. Después de que señalaste que un correo no es requerido por la API de WordPress, descubrí la verdadera fuente del problema.

Usando WordPress 4.7.2, resolví esto con los siguientes hooks:
// Esto suprimirá los errores de email vacío al enviar el formulario de usuario
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');
}
// Esto eliminará la validación requerida de javascript para el campo de email
// También eliminará el texto '(requerido)' en la etiqueta
// Funciona para formularios de nuevo usuario, perfil de usuario y edición de usuario
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();
// Desmarcar la opción de enviar email al nuevo usuario por defecto
<?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
jQuery('#send_user_notification').removeAttr('checked');
<?php endif; ?>
</script>
<?php
}

Según la documentación de WordPress, wp_create_user
también te permite insertar usuarios sin correo electrónico, ya que es un parámetro opcional. Todo lo que necesitas hacer es proporcionar un nombre de usuario único y una contraseña.

Esta es una pregunta bastante antigua, pero sigue siendo relevante.
De todos modos, @Milo definitivamente tenía la idea correcta.
Esto es lo que uso y funciona muy bien. Es muy conveniente cuando quieres crear usuarios, pero prefieres mantener tu backend de WordPress bloqueado. Por ejemplo, si tienes un blog y prefieres que tus autores de contenido te envíen su trabajo, esto te permite crear un usuario para ellos sin darles acceso real. O si prefieres bloguear bajo un alias. Incluso es útil para propósitos de prueba o, supongo, para esas personas "sospechosas" que quieren crear un montón de usuarios falsos para su sitio (sabes quiénes son).
Añade esto a functions.php temporalmente o úsalo con un plugin útil como Code Snippets.
function wpse_22754_insert_new_user() {
$user_data = array(
'ID' => '', // se crea automáticamente
'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', // dejar vacío para auto
'role' => get_option('default_role') // administrador, editor, suscriptor, autor, etc
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'wpse_22754_insert_new_user' );
Si buscas actualizar usuarios desde el backend después de crearlos, añade esto y evitarás el mensaje de error/advertencia.
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' );
Si prefieres usar un plugin, este probablemente hará el trabajo:

El plugin "Importar usuarios desde CSV" te permitirá crear usuarios sin dirección de correo electrónico. Los añadí con...
last_name,first_name,display_name,user_login
Gamble,Bill,Bill Gamble,BillGamble
Nuestro club utiliza la base de datos wp_users de WordPress, pero necesitamos tener registrados incluso a aquellos miembros que no tienen correo electrónico

Encontré una forma en YouTube, cuando busqué "cómo crear usuarios sin correo electrónico en WordPress":
- Instala el plugin "Code Snippets"
- Selecciona "Añadir nuevo" en este plugin
- Elige un nombre para el snippet. Por ejemplo: "Código para email no requerido"
4. Introduce este código:
// Esto suprimirá los errores de email vacío al enviar el formulario de usuario
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');
}
// Esto eliminará la validación por JavaScript para el campo de email
// Eliminará el texto '(requerido)' en la etiqueta
// Funciona para nuevos usuarios, perfiles de usuario y formularios de edición
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();
// Desmarcar la opción de enviar notificación por email por defecto
<?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
jQuery('#send_user_notification').removeAttr('checked');
<?php endif; ?>
</script>
<?php
}
- Selecciona "Ejecutar solo en el área de administración" y elige "Guardar cambios y activar"
- ¡Ahora verifica, debería funcionar!
