web-dev-qa-db-de.com

Erstellen Sie eine benutzerdefinierte Begrüßungs-E-Mail ohne Plugin

Gibt es eine Möglichkeit, den E-Mail-Inhalt und den Betreff für die Begrüßungs- und Bestätigungs-E-Mails anzupassen, die während des Registrierungsprozesses für Wordpress gesendet werden? Ich möchte einbinden oder filtern, ohne ein Plugin oder die Funktion "pluggable" zu verwenden.

Wenn mich jemand in die richtige Richtung weisen könnte, wäre ich sehr dankbar. Vielen Dank!

4
Jake Lisby

Ich fürchte, Sie müssen die Funktion Plug-in-Funktionen verwenden - es gibt keinen Filter oder Haken in diesen Funktionen (wie Sie aus dem folgenden Code sehen können). Und was noch schlimmer ist, für Sie ist es besser, die Funktion pluggable in einem Plugin zu verwenden.

Dies liegt daran, dass Sie durch das Definieren einer neuen pluggable-Funktion in den functions.php Ihres Themas aufgefordert werden, eine Definition einer neuen Funktion in einer Funktion zu verwenden (um sie aufzurufen, sobald alle Plugins vollständig geladen sind), was möglicherweise fehlerhaft ist (siehe Kommentare unten) dieser Beitrag), aber auf der anderen Seite funktioniert es - siehe Code unter dem ersten.

Für diejenigen, die nicht gegen Plugins sind, ist hier eine, die eine Plugin-Funktion umschreibt - speichere sie einfach in my_plugin.php (oder irgendetwas anderem) in deinem Plugin-Verzeichnis und aktiviere sie von deinem Administrator aus:

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
if( !function_exists('new_user_notification') ){
function new_user_notifiaction(){
        /**
         * Notify the blog admin of a new user, normally via email.
         *
         * @since 2.0
         *
         * @param int $user_id User ID
         * @param string $plaintext_pass Optional. The user's plaintext password
         */
        function wp_new_user_notification($user_id, $plaintext_pass = '') {
            $user = get_userdata( $user_id );

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

            // The blogname option is escaped with esc_html on the way into the database in sanitize_option
            // we want to reverse this for the plain text arena of emails.
            $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

            $message  = sprintf(__('New user registration on your site %s:'), $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'), $blogname), $message);

            if ( empty($plaintext_pass) )
                return;

            $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
            $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
            $message .= wp_login_url() . "\r\n";

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

        }
    }
}

Nur wenn Sie neugierig sind, hier derselbe Effekt, der von functions.php mit einer neuen Funktion verwaltet wird, die in einer anderen Funktion definiert ist:

//redefine wp_new_user_notification as soon as all plugins are loaded
add_action( 'plugins_loaded', 'new_user_notifiaction' );

function new_user_notifiaction(){
    /**
     * Notify the blog admin of a new user, normally via email.
     *
     * @since 2.0
     *
     * @param int $user_id User ID
     * @param string $plaintext_pass Optional. The user's plaintext password
     */
    function wp_new_user_notification($user_id, $plaintext_pass = '') {
        $user = get_userdata( $user_id );

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

        // The blogname option is escaped with esc_html on the way into the database in sanitize_option
        // we want to reverse this for the plain text arena of emails.
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

        $message  = sprintf(__('New user registration on your site %s:'), $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'), $blogname), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
        $message .= wp_login_url() . "\r\n";

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

    }
}
0
david.binda

Dies scheint eine nette Idee zu sein, die auch in functions.php funktionieren würde:

// Add filter for registration email body
add_filter('wp_mail','handle_wp_mail');

function handle_wp_mail($atts) {
    /*"Your username and password" is the subject of the Email WordPress send from "function wp_new_user_notification" in file "wp-includes/pluggable.php"*/

    if (isset ($atts ['subject']) && substr_count($atts ['subject'],'Your username and password')>0 ) {
    if (isset($atts['message'])) {
       $atts['message'] = 'new body';
    }
    }
    return ($atts);
}

Achten Sie einfach auf die Sprache, um den richtigen Betreff zu erhalten. (Quelle: http://wordpress.org/support/topic/how-to-change-registration-email-content?replies=3 )

0
optimiertes