Skip to content

Instantly share code, notes, and snippets.

@davekiss
Created September 18, 2018 18:33
Show Gist options
  • Select an option

  • Save davekiss/e2b5beb37b3a1a93a3dddcf43ce51ce9 to your computer and use it in GitHub Desktop.

Select an option

Save davekiss/e2b5beb37b3a1a93a3dddcf43ce51ce9 to your computer and use it in GitHub Desktop.

Revisions

  1. davekiss created this gist Sep 18, 2018.
    88 changes: 88 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,88 @@
    /**
    * Redirect the user to the appropriate page upon login.
    */
    add_filter( 'login_redirect', function( $url, $query, $user ) {
    if ( is_wp_error( $user ) ) {
    return $url;
    }

    if ( current_user_can('administrator') ) {
    return $url;
    }

    if ( EDD()->cart()->is_empty() ) {
    return home_url( "/account" );
    } else {
    return edd_get_checkout_uri();
    }
    }, 10, 3 );


    /**
    * Check if an email exists during checkout and encourage the user to login
    * @return {[type]} [description]
    */
    add_action('wp_ajax_nopriv_edd_check_if_customer_email_exists', function() {
    if ( is_user_logged_in() ) {
    return;
    }

    check_ajax_referer( 'edd_check_if_customer_email_exists' );

    if ( empty( $_REQUEST['email'] ) ) {
    return;
    }

    $email = sanitize_email( $_REQUEST['email'] );

    if ( username_exists($email) || email_exists( $email ) ) {
    echo "1";
    die;
    }

    echo "0";
    die;
    });

    function edd_check_if_email_exists_during_checkout() {
    if ( is_user_logged_in() ) {
    return;
    }

    ob_start();?>
    <script>
    var $emailInput = jQuery('#edd-email');
    var emailFound = false;

    $emailInput.blur(function(e) {
    var value = e.target.value;

    jQuery.ajax({
    url: "/wp/wp-admin/admin-ajax.php",
    type: "POST",
    data: {
    "action": "edd_check_if_customer_email_exists",
    "_wpnonce": "<?php echo wp_create_nonce( 'edd_check_if_customer_email_exists' ); ?>",
    "email": value
    },
    success: function(exists) {
    if (exists == "1" && emailFound == false) {
    jQuery("#edd-purchase-button").prop("disabled", true);

    var emailTemplate = '<div style="margin: 15px 0 0;color: #fafafa;background: #12af95;padding: 15px;border-radius: 2px;box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15);"><h2 style="margin: 0;">Welcome back!</h2><p style="color: #fafafa;">Before you purchase, <a href="/account" style="color: #292d33; font-weight: bold;">please sign in to your account.</a></p></div>';
    $emailInput.after(emailTemplate);
    emailFound = true;
    }
    },
    error: function(error) {
    console.error(error);
    }
    })
    });
    </script>

    <?php
    echo ob_get_clean();
    }

    add_action('edd_purchase_form_after_user_info', 'edd_check_if_email_exists_during_checkout', 11);