/**
 * Exclude Certain Email Domains from Membership Signup
 * use this code recipe to prevent registration for specific email domains. 
 * edit the line 62 $invalid_domains array to include the domains you want to block.
 * 
 * title: Exclude Certain Email Domains from Membership Signup
 * layout: snippet
 * collection: checkout
 * category: restrict checkout
 * link: https://www.paidmembershipspro.com/exclude-certain-email-domains-from-membership-signup/
 *
 * You can add this recipe to your site by creating a custom plugin
 * or using the Code Snippets plugin available for free in the WordPress repository.
 * Read this companion article for step-by-step directions on either method:
 * https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
 */

function invalid_email_addresses_pmpro_registration_checks( $okay ) {
    // Safely get the email entered at checkout.
    $email = '';
    if ( isset( $_POST['bemail'] ) ) {
        $email = sanitize_email( $_POST['bemail'] );
    }

    // Skip if no email provided (prevents PHP warnings).
    if ( empty( $email ) ) {
        return $okay;
    }

    // Check if the email domain is invalid.
    if ( my_checkForInvalidDomain( $email ) ) {
        global $pmpro_msg, $pmpro_msgt;
        $pmpro_msg = "Please enter a valid email address.";
        $pmpro_msgt = "pmpro_error";
        return false;
    }

    return $okay;
}
add_filter( 'pmpro_registration_checks', 'invalid_email_addresses_pmpro_registration_checks' );

/**
 * Check if email domain is in the blocked list.
 */
function my_checkForInvalidDomain( $email ) {
    $email = sanitize_email( $email );

    // Split the email into user and domain parts.
    $parts = explode( '@', $email );
    if ( count( $parts ) < 2 ) {
        return false;
    }

    $domain_part = strtolower( trim( end( $parts ) ) );

    // Remove any "+alias" portion from the username part.
    $user_part = preg_replace( '/+.*/', '', $parts[0] );
    $normalized_email = $user_part . '@' . $domain_part;

    // Define domains to block.
    $invalid_domains = array( 'aol.com', 'yopmail.com', 'icloud.com', 'gmail.com', 'hotmail.com', 'windowslive.com');

    // Check if domain ends with any blocked domain.
    foreach ( $invalid_domains as $invalid_domain ) {
        $invalid_domain = strtolower( str_replace( '*.', '', $invalid_domain ) );
        if ( str_ends_with( $domain_part, $invalid_domain ) ) {
            return true;
        }
    }

    return false;
}


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://www.kyocera-kyosk.co.uk/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-elementskit_content-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-elementskit_template-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-product-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-r3d-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-posts-envira-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-category-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-post_tag-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-product_cat-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-product_tag-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-pa_applications-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-pa_device-type-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-pa_output-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-pa_paper-size-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-pa_print-speed-1.xml</loc></sitemap><sitemap><loc>https://www.kyocera-kyosk.co.uk/wp-sitemap-taxonomies-r3d_category-1.xml</loc></sitemap></sitemapindex>
