0

I'm using WC Email Verification (by XL Plugins) to add verification to WooCommerce user registration (making the user click a link in an email to verify their account before they can use it). My problem is that WooCommerce still sends a "New account" email when the user first registers before they've verified their email address.

I'd like to make it so instead the user gets this "New account" email after they've verified.

I looked at the WooCommerce code and found a "WC_Email_Customer_New_Account" class but I couldn't see which function/where in that class the email is actually sent (I think it might be sent in another class, but I'm not sure). I'm wondering if adding something like an "if" statement to check if an account is verified before sending a "New account" email in WooCommerce would work or if there's a way to call the WooCommerce function that sends a New Account email from my email verification plugin.

If it helps, here is the code for that "WC_Email_Customer_New_Account" class that seems relevant (I don't want to put too much unnecessary code):

<?php

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}

if ( ! class_exists( 'WC_Email_Customer_New_Account', false ) ) :

/**
 * Customer New Account.
 *
 * An email sent to the customer when they create an account.
 *
 * @class       WC_Email_Customer_New_Account
 * @version     2.3.0
 * @package     WooCommerce/Classes/Emails
 * @extends     WC_Email
 */
class WC_Email_Customer_New_Account extends WC_Email {

    /**
     * User login name.
     *
     * @var string
     */
    public $user_login;

    /**
     * User email.
     *
     * @var string
     */
    public $user_email;

    /**
     * User password.
     *
     * @var string
     */
    public $user_pass;

    /**
     * Is the password generated?
     *
     * @var bool
     */
    public $password_generated;

    /**
     * Constructor.
     */
    public function __construct() {
        $this->id             = 'customer_new_account';
        $this->customer_email = true;
        $this->title          = __( 'New account', 'woocommerce' );
        $this->description    = __( 'Customer "new account" emails are sent to the customer when a customer signs up via checkout or account pages.', 'woocommerce' );
        $this->template_html  = 'emails/customer-new-account.php';
        $this->template_plain = 'emails/plain/customer-new-account.php';

        // Call parent constructor.
        parent::__construct();
    }

    /**
     * Get email subject.
     *
     * @since  3.1.0
     * @return string
     */
    public function get_default_subject() {
        return __( 'Your account on {site_title}', 'woocommerce' );
    }

    /**
     * Get email heading.
     *
     * @since  3.1.0
     * @return string
     */
    public function get_default_heading() {
        return __( 'Welcome to {site_title}', 'woocommerce' );
    }

    /**
     * Trigger.
     *
     * @param int    $user_id User ID.
     * @param string $user_pass User password.
     * @param bool   $password_generated Whether the password was generated automatically or not.
     */
    public function trigger( $user_id, $user_pass = '', $password_generated = false ) {
        $this->setup_locale();

        if ( $user_id ) {
            $this->object = new WP_User( $user_id );

            $this->user_pass          = $user_pass;
            $this->user_login         = stripslashes( $this->object->user_login );
            $this->user_email         = stripslashes( $this->object->user_email );
            $this->recipient          = $this->user_email;
            $this->password_generated = $password_generated;
        }

        if ( $this->is_enabled() && $this->get_recipient()  ) {
            $this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
        }

        $this->restore_locale();
    }

    /**
     * Get content html.
     *
     * @access public
     * @return string
     */
    public function get_content_html() {
        //just returns some content of the email, omitted to keep code more concise, if this is relevant I can show function 
    }

    /**
     * Get content plain.
     *
     * @access public
     * @return string
     */
    public function get_content_plain() {
        //just returns some content of the email, omitted to keep code more concise, if this is relevant I can show function 
    }
}

endif;

return new WC_Email_Customer_New_Account();
0

You can disable woocommerce New Account verification mail from woocommerce setting. 1) click on woocommerce setting 2) on the setting page you found an email tab 3) Here you can see a list of emails service supported by woocommerce from their select New Account and disable it to sending mail for the new account.

  • Thank you, but I still need the New Account email to send, just at a different time – user3505195 Aug 21 '18 at 19:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.