WordPress/BuddyPress stuur e-mail voordat gebruiker geactiveerd is

BuddyPress logo.Probleem:
Voor een WordPress website maak ik gebruik van BuddyPress als sociaal netwerk. Op deze website kunnen mensen zich registeren en na registratie moet de aanmelding door een beheerder gecontroleerd worden op volledigheid. Standaard worden gebruikers die zichzelf registreren meteen geactiveerd nadat de gebruiker op de activatielink heeft geklikt.

In deze website heb ik de e-mail die BuddyPress verstuurd naar de nieuwe gebruiker aangepast zodat er geen activatielink in wordt geplaatst. De optie om via de website een nieuwe activatielink aan te vragen heb ik verborgen. Via een RewriteRule in het .htaccess bestand voorkom ik dat gebruikers handmatig de url in de adresbalk typen om een activatielink te versturen.

Het nadeel van deze opzet is dat beheerders geen e-mail ontvangen wanneer een nieuwe gebruiker zich registreert. Deze e-mail wordt pas door WordPress verstuurd als de gebruiker geactiveerd is. Dit is nou net iets wat de beheerder moet doen.

Oplossing a:
Een gemakkelijke oplossing is om de plugin BuddyPress Registration Options te installeren. Hiermee zorg je ervoor dat een gebruiker zich niet kan activeren en dat de beheerder een e-mail ontvangt wanneer er een nieuwe gebruiker is geregistreerd. De plugin doet precies wat hij moet doen.

Het eerste nadeel hiervan is dat je weer een extra plugin hebt. Het tweede nadeel is dat gebruikers wel in kunnen loggen maar nog niets kunnen doen, immers hun account is nog niet geactiveerd. Het derde nadeel is dat de e-mails die verstuurd worden door deze plugin niet opgemaakt zijn met HTML. Het zijn gewoon plaintext e-mails.

Oplossing b:
Het enige wat eigenlijk ontbrak in bovenstaande probleemsituatie is de e-mail die niet verstuurd word voordat een gebruiker is geactiveerd. Daarnaast gaat de voorkeur uit naar een oplossing waarvoor geen nieuwe plugin geïnstalleerd hoeft te worden.

Daarom heb ik onderstaande code toegevoegd aan mijn functions.php bestand van mijn thema. Deze functie verstuurd een e-mail naar het algemene e-mailadres wanneer er een nieuwe gebruiker is geregistreerd die geactiveerd moet worden. De functie haakt in op de user_register() functie.

/**
 * Send a e-mail to the main website email address to inform that a new user is added.
 *
 * @param $user_id
 */
function child_send_register_alert($user_id) {
    // Retrieve needed information.
    $user     = get_userdata( $user_id );
    $email    = $user->user_email;
    $username = $user->user_nicename;
    $url      = get_site_url() . '/wp-admin/users.php?page=bp-signups';
    $receiver = get_bloginfo('admin_email');

    // Compose the e-mail.
    $subject  = 'Nieuwe gebruiker geregistreerd, moet worden geactiveerd';
    $message  = $username . ' (' . $email . ') heeft zich geregistreerd.' . PHP_EOL . PHP_EOL
              . 'Dit account moet nog geactiveerd worden op onderstaande pagina:' . PHP_EOL
              . $url . PHP_EOL . PHP_EOL
              . 'Let op: na activeren wordt er GEEN e-mail naar de gebruiker gestuurd vanuit de website!';

    // Send the e-mail.
    wp_mail($receiver, $subject, $message);
}
add_action('user_register', 'child_send_register_alert');

Laat een reactie achter

Je e-mailadres zal niet worden gepubliceerd. vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.