web-dev-qa-db-fra.com

Remplacer la valeur par défaut WP E-mail de notification multisite

Est-il possible de se connecter et de remplacer le message de notification par défaut pour WP MS? Je sais que le message envoyé est dans /wp-admin/user-new.php

if ( is_multisite() ) {
    function admin_created_user_email( $text ) {
        /* translators: 1: Site name, 2: site URL, 3: role */
        return sprintf( __( 'Hi,
You\'ve been invited to join \'%1$s\' at
%2$s as a %3$s.
If you do not want to join this site please ignore
this email. This invitation will expire in a few days.

Please click the following link to activate your user account:
%%s' ), get_bloginfo('name'), site_url(), esc_html( $_REQUEST[ 'role' ] ) );
    }
    add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );

    function admin_created_user_subject( $text ) {
        return "[" . get_bloginfo('name') . "] Your site invite";
    }
}

Je crois que je peux le faire si je peux trouver le bon raccord afin de pouvoir retirer remove_filter (), puis d'ajouter le mien.

function reset_admin_email(){
    remove_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
    add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email2', 1 );
}

Je lisais cette page qui énumère les actions/crochets je peux m'attacher, mais je ne sais pas laquelle utiliser (si aucun d'entre eux ne fonctionnera)

Est-ce que quelqu'un a de l'expérience avec cela pour me diriger dans la bonne direction?

Merci
Levi

5
Levi

J'ai pu remplacer le courrier électronique de notification multisite en ajoutant:

remove_filter('wpmu_signup_user_notification_email','admin_created_user_email');
add_filter('wpmu_signup_user_notification_email',<function_name_here>);
add_filter('wpmu_signup_user_notification',<function_name_here>);
add_filter('wpmu_signup_user_notification_subject',<function_name_here>);

L’ajout des trois filtres en bas, c’est-à-dire le courrier électronique, les notifications et le sujet, vous permet de remplacer le contenu et le sujet du courrier électronique.

3
Aldous Wright

@ user2647 semble être sur la bonne voie, mais je pense que c'est plus correct:

remove_action( 'wpmu_new_user', 'newuser_notify_siteadmin' );
add_action( 'wpmu_new_user', 'my_notification' );

function my_notification ($user_id) {
  // Make your custom notification here.
}
2
Graeme

remove_filter n'a aucun effet car /wp-admin/user-new.php est exécuté

add_filter('wpmu_signup_user_notification_email', admin_created_user_email);

à chaque chargement, après plugins_loaded.

J'ai obtenu ce travail en ajoutant un nouveau filtre avec un inférieur priority (nombre plus élevé), il est donc exécuté après admin_created_user_email, qui a la priorité par défaut (10):

function reset_admin_email(){
    add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email2', 11 );
}
2
Dylan Barlett

Ce genre de chose fonctionnerait-il?

if ( !function_exists('wp_new_user_notification') ) {
function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
    $user = new WP_User($user_id);

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);
            $message = $user_login . " " . $user_email;

    wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);

}
}
1
rocketman27

La plupart du texte de ces courriels peut être traduit, ce qui signifie que nous pouvons puiser dans le filtre gettext de WP. J'ai trouvé la méthode suivante pour mettre en œuvre les traductions en ligne mais je ne trouve pas la source d'origine.

Définissez d'abord votre crochet de filtre:

add_filter('gettext', [new AddAction(), 'gqa_text_strings'], 20, 3);

Ensuite, votre fonction de traduction:

 /**
 * Change a few text strings related to the login/registration process
 *
 * @link http://codex.wordpress.org/Plugin_API/Filter_Reference/gettext
 *
 * @param $translated_text
 * @param $text
 * @param $domain
 *
 * @return string
 */
function gqa_text_strings($translated_text, $text, $domain)
{
    switch ( $translated_text ) {
        case 'Get your own %s account in seconds' :
            $translated_text = __('Request access to %s', 'gqa');
            break;
        case 'We send your registration email to this address. (Double-check your email address before continuing.)' :
            $translated_text = __('', 'gqa');
            break;
        case 'But, before you can start using your new username, <strong>you must activate it</strong>.' :
            $translated_text = __('An email with login instructions has been sent to the address you provided.', 'gqa');
            break;
        case "Check your inbox at %s and click the link given." :
            $translated_text = __('Check your inbox at %s.', 'gqa');
            break;
        case 'If you do not activate your username within two days, you will have to sign up again.' :
            $translated_text = __('', 'gqa');
            break;
        // Subject line for new user registration email
        case 'New %1$s User: %2$s' :
            $translated_text = __('Your account information');
            break;
        // Error message when registering a new account with an already used username.
        case 'That username is currently reserved but may be available in a couple of days.' :
            $translated_text = __('A user with that username already exists. Do you already have an account? Please contact site administrators or try again.');
            break;
        // Error message when registering a new account with an already used email address.
        case 'That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing.' :
            $translated_text = __('That email address has already been assigned to an account. Do you already have an account? Please contact site administrators or try again');
            break;
    }

    return $translated_text;
}

Vous savez qu'une chaîne est traduisible si elle est incluse dans la fonction __ () . Donc, dans votre cas, vous ajouteriez ce qui suit:

case 'Hi, You\'ve been invited to join \'%1$s\' at
%2$s as a %3$s. If you do not want to join this site please ignore
this email. This invitation will expire in a few days. Please click the following link to activate your user account: %%s' :
    $translated_text = __('Whatever you want the email to say', 'gqa');
    break;
0
badcrocodile

Dylan a la bonne réponse mais d'élaborer.

Ajoutez un filtre qui se déclenche après le filtre par défaut avec une priorité supérieure à 10:

add_filter( 'wpmu_signup_user_notification_email', 'wp_new_user_notification', 11 );

La fonction pour le contenu:

function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {

            $user = new WP_User( $user_id );

            $user_login = stripslashes( $user->user_login );
            $user_email = stripslashes( $user->user_email );

            $message  = sprintf( __('New user registration on %s:'), get_option('blogname') ) . "\r\n\r\n";
            $message .= sprintf( __('Username: %s'), $user_login ) . "\r\n\r\n";
            $message .= sprintf( __('E-mail: %s'), $user_email ) . "\r\n";

            @wp_mail(
                get_option('admin_email'),
                sprintf(__('[%s] New User Registration'), get_option('blogname') ),
                $message
            );

            if ( empty( $plaintext_pass ) )
                return;

            $message  = __('Hi there,') . "\r\n\r\n";
            $message .= sprintf( __("Welcomeeee to %s! Here's how to log in:"), get_option('blogname')) . "\r\n\r\n";
            $message .= wp_login_url() . "\r\n";
            $message .= sprintf( __('Username: %s'), $user_login ) . "\r\n";
            $message .= sprintf( __('Password: %s'), $plaintext_pass ) . "\r\n\r\n";
            $message .= sprintf( __('If you have any problems, please contact me at %s.'), get_option('admin_email') ) . "\r\n\r\n";
            $message .= __('Adios!');

            wp_mail(
                $user_email,
                sprintf( __('[%s] Yourrrrrrr username and password'), get_option('blogname') ),
                $message
            );
        }
  • Ce code est un copier/coller de Codex example.
  • Référencé directement dans core ici .

Enfin, déposez-le dans le dossier mu-pluginswp-content/mu-plugins

0
Wyck