Automattic\WooCommerce\Internal\CustomerEmailVerification

CustomerEmailVerification{}WC 11.0.0

Boot class for the customer email verification subsystem.

Resolves each controller so that their constructors register hooks during the plugins_loaded action.

No Hooks.

Usage

$CustomerEmailVerification = new CustomerEmailVerification();
// use class methods

Methods

  1. public __construct()
  2. public init_hooks()
  3. public register_email_classes( array $emails )

Changelog

Since 11.0.0 Introduced.

CustomerEmailVerification{} code WC 11.0.0

class CustomerEmailVerification {

	/**
	 * Initialize the subsystem.
	 *
	 * @since 11.0.0
	 */
	public function __construct() {
		add_action( 'plugins_loaded', array( $this, 'init_hooks' ) );
	}

	/**
	 * Resolve all subsystem controllers so their constructors register hooks.
	 *
	 * @internal
	 * @since 11.0.0
	 */
	public function init_hooks(): void {
		add_filter( 'woocommerce_email_classes', array( $this, 'register_email_classes' ) );

		// Link a customer's matching guest orders to their account once they verify their email.
		// wc_update_new_customer_past_orders() casts the ID and no-ops for guest/invalid users; the
		// order count it returns is unused here.
		// @phpstan-ignore-next-line return.void -- The returned count is intentionally discarded.
		add_action( 'woocommerce_customer_email_verified', 'wc_update_new_customer_past_orders' );

		$container = wc_get_container();
		$container->get( VerificationController::class );
		$container->get( VerificationEventListener::class );

		if ( is_admin() ) {
			$container->get( UserProfileField::class );
		}
	}

	/**
	 * Register the customer email verification email with WooCommerce.
	 *
	 * @internal
	 *
	 * @param array $emails Registered email classes.
	 * @return array
	 */
	public function register_email_classes( array $emails ): array {
		$emails['WC_Email_Customer_Verify_Email'] = new CustomerVerifyEmail();
		return $emails;
	}
}