Deshabilitar notificación por correo electrónico después de cambiar la contraseña
Quiero deshabilitar la notificación por correo electrónico si un usuario o un administrador cambia la contraseña de un usuario.
Después de buscar en Google, descubrí que necesito crear un plugin y sobrescribir la función wp_password_change_notification
que se encuentra en pluggable.php
.
Este es el plugin y la función:
<?php
/*
Plugin Name: Detener correo de cambio de contraseña
Description: Lo que sea
*/
if ( !function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification() {}
}
?>
¡Subí el archivo a mi carpeta de plugins y lo activé en mi panel de administración!
Esto debe hacerse con un plugin porque el archivo pluggable.php
se carga antes que el archivo functions.php
.
De todos modos, parece que no funciona para mí.
El usuario sigue recibiendo el correo electrónico.
Desactivé todos los plugins y ejecuté el plugin en una instalación limpia para que no haya interferencias
¡El WP_DEBUG
tampoco muestra ningún error!
¿Alguien puede decirme qué cambiar o cómo arreglarlo de otra manera (excepto modificaciones del núcleo :-))
M.

Para desactivar la notificación por correo electrónico al usuario, agrega esto en un plugin o tema:
add_filter( 'send_password_change_email', '__return_false' );
Para tu información, la función wp_password_change_notification()
controla la notificación por correo electrónico al administrador cuando un usuario cambia su contraseña.

Para desactivar la notificación por correo al Administrador cuando un usuario restablece su propia contraseña, crea un Plugin (o un Plugin de Uso Obligatorio) usando el siguiente fragmento de código:
/**
* Desactiva la Notificación al Administrador del Cambio de Contraseña de Usuario
*
* @see pluggable.php
*/
if ( ! function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification( $user ) {
return;
}
}
Esto evitará que se envíe el siguiente correo electrónico al Email del Administrador en Ajustes > Generales:
De: WordPress <wordpress@example.com>
Para: admin@example.com
Asunto: [WordPress] Contraseña CambiadaContraseña cambiada para el usuario: nombredeusuario
La supresión de esta notificación por correo debe manejarse con un plugin porque pluggable.php
se carga antes que el archivo functions.php
del tema.
Si deseas en su lugar desactivar la notificación por correo al Usuario que confirma que ha cambiado su contraseña correctamente, usa el siguiente filtro colocado en functions.php
:
/**
* Desactiva la Notificación al Usuario de Confirmación de Cambio de Contraseña
*/
add_filter( 'send_password_change_email', '__return_false' );
Esto suprimirá el siguiente correo electrónico:
De: WordPress <wordpress@example.com>
Para: nombredeusuario@example.com
Asunto: [WordPress] Contraseña CambiadaHola nombredeusuario,
Este aviso confirma que tu contraseña fue cambiada en WordPress.
Si no cambiaste tu contraseña, por favor contacta al Administrador del Sitio en admin@example.com
Este correo ha sido enviado a nombredeusuario@example.com
Saludos,
Todo el equipo de WordPress
http://example.com/

Hay un gran error en esta respuesta. El nombre del filtro es "send_password_change_email", no "send_email_change_email".
https://codex.wordpress.org/Plugin_API/Filter_Reference/send_password_change_email

Anotado. Como referencia, estos dos filtros están relacionados y pueden usarse para desactivar la notificación al usuario cuando se cambia el correo electrónico o la contraseña por parte del usuario. El caso de uso para cada uno depende de qué notificación deseas suprimir: cambio de correo o cambio de contraseña. Para una imagen más clara, consulta la función de WordPress wp_update_user()
en wp-includes/user.php
: https://core.trac.wordpress.org/browser/tags/4.9.5/src/wp-includes/user.php#L1795

ese hook es solo para cuando se usa woocommerce (woocommerce 3.8, no wordpress 3.8)

@Rafa Ups, sí, he estado haciendo tanto desarrollo de WC + WP que las líneas se han difuminado para mí. He ajustado mi respuesta, gracias.

Ten en cuenta que esto desactivará el correo de restablecimiento de contraseña para el usuario (ver /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php
) y por lo tanto no está relacionado con las notificaciones de administrador...

Este hook 'woocommerce_disable_password_change_notification' efectivamente desactiva el correo electrónico de notificación "Contraseña Cambiada" que se envía al administrador en sitios WooCommerce. Puedes observar en /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php
que evita que se ejecute la función wp_password_change_notification()
, y dicha función "Notifica al administrador del blog cuando un usuario cambia su contraseña" Referencia para Desarrolladores de WordPress

Esto funciona para mí, solo hay que limpiar la dirección de correo electrónico.
// Desactiva el correo de notificación de cambio de contraseña.
add_filter('wp_password_change_notification_email', function ($wp_password_change_notification_email) {
$wp_password_change_notification_email['to'] = '';
return $wp_password_change_notification_email;
});

Copia el siguiente código y guárdalo como disable_email.php. Luego coloca ese archivo en el directorio "wp-content/plugins/". Y actívalo desde el Panel de Administración.
<?php
/*
Plugin Name: Detener notificación de cambio de contraseña
Description: Lo que sea
*/
if (!function_exists('wp_password_change_notification')) {
function wp_password_change_notification($user) {
return;
}
}
?>

Sí, eso es lo que pensé que había descrito. ¡Pero actualizaré la pregunta si no quedó claro!

WordPress envía la notificación por defecto cuando el usuario es actualizado con wp_update_user()
.
Intentar sobrescribir esto usando filtros, modificando pluggable.php
, o sobrescribiendo con una función vacía, no funciona.
En su lugar, usa wp_set_password( $password, $user_id )
cuando no quieres que se active el correo de notificación para usuarios/administradores al restablecer la contraseña.

edición: esto es para desactivar solamente las notificaciones del administrador cuando cualquier otro usuario del sitio cambia su contraseña. ¡Puede que haya malinterpretado la pregunta! Mis disculpas =]
La función wp_password_change_notification
es la responsable de esta funcionalidad dentro de WordPress que envía correos electrónicos a los administradores con estas actualizaciones de cambio de contraseña de usuarios (como ya han mencionado otras publicaciones).
Lo que no he visto aquí es que dentro de ./wp-includes/default-filters.php
~línea 499 (al momento de escribir esto) verás que esta función está siendo añadida a la acción after_password_reset
.
Una solución rápida es simplemente eliminarla de la lista de acciones:
remove_action( 'after_password_reset', 'wp_password_change_notification' );
Definitivamente puedes reescribir/sobrescribir wp_password_change_notification
, ya que es una de las funciones de pluggable.php
, pero si lo que buscas es eliminar esta funcionalidad en lugar de actualizarla, esta podría ser una mejor opción.

Agregaré que la acción after_password_reset se ejecuta después del procedimiento de restablecimiento de contraseña (pantalla de inicio de sesión). El envío de una notificación de cambio de contraseña como resultado de la edición del perfil se puede controlar mediante el filtro send_password_change_email.

Las otras respuestas son incorrectas porque deshabilitan el envío de correo electrónico cuando se cambia el email, no cuando se cambia la contraseña.
Agregar el siguiente código en tu archivo functions.php bajo tu tema activo (o alternativamente en un plugin) debería funcionar. Funcionó para mí en la versión 4.6.1
/**
* Deshabilita el envío del correo electrónico de cambio de contraseña
*/
add_filter( 'send_password_change_email', '__return_false' );
Consulta la documentación oficial

Utiliza la función wp_set_password() en lugar de wp_update_user() para actualizar la contraseña ya que esto no activará una notificación por correo electrónico.
