it-swarm.com.de

Standard überschreiben WP Multisite-Benachrichtigungs-E-Mail

Ist es möglich, die Standardbenachrichtigung für WP MS anzuhängen und zu überschreiben? Ich weiß, dass die gesendete Nachricht in /wp-admin/user-new.php ist

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";
    }
}

Ich glaube, ich kann es tun, wenn ich den richtigen Hook finde, damit ich remove_filter () und dann meinen eigenen in hinzufügen kann. Ich habe mit Folgendem gespielt (admin_created_user_email2 ist meine neue Funktion):

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 );
}

Ich habe diese Seite gelesen, die die Aktionen/Hooks auflistet an die ich mich binden kann, aber ich kann nicht herausfinden, welche verwendet werden soll (wenn eine davon überhaupt funktioniert).

Hat jemand Erfahrung damit, um mich in die richtige Richtung zu weisen?

Vielen Dank
Levi

5
Levi

Ich konnte die Benachrichtigungs-E-Mail mit mehreren Standorten überschreiben, indem ich Folgendes hinzufügte:

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>);

Durch Hinzufügen der drei Filter unten, d. H. E-Mail, Benachrichtigung und Betreff, können Sie den Inhalt und den Betreff der E-Mail überschreiben.

3
Aldous Wright

@ user2647 scheint auf dem richtigen Weg zu sein, aber ich denke, dass dies korrekter ist:

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 hat keine Auswirkung, da /wp-admin/user-new.php ausgeführt wird

add_filter('wpmu_signup_user_notification_email', admin_created_user_email);

jedes Mal, wenn es geladen wird, nachdem plugins_loaded.

Ich habe dies funktioniert, indem ich einen neuen Filter mit a hinzufügte niedriger priority (höhere Zahl), wird also nach admin_created_user_email ausgeführt, der die Standardpriorität (10) hat:

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

Würde so etwas funktionieren?

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

Der größte Teil des Textes in diesen E-Mails ist übersetzbar, was bedeutet, dass wir auf den gettext -Filter von WP zugreifen können. Ich habe die folgende Methode gefunden, um Übersetzungen online zu implementieren, kann aber die Originalquelle nicht finden.

Definieren Sie zuerst Ihren Filterhaken:

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

Dann Ihre Übersetzungsfunktion:

 /**
 * 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;
}

Sie wissen, dass ein String übersetzbar ist, wenn er in der Funktion __ () enthalten ist. In Ihrem Fall würden Sie also Folgendes hinzufügen:

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 hat die richtige Antwort aber zu erarbeiten.

Fügen Sie einen Filter hinzu, der nach dem Standardfilter mit einer höheren Priorität als 10 ausgelöst wird:

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

Die Funktion für den Inhalt:

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
            );
        }
  • Dieser Code ist ein Copy Paste aus Codex example.
  • Wird direkt in core here referenziert.

Zum Schluss lege es in den mu-plugins Ordnerwp-content/mu-plugins

0
Wyck