Forked from EvanHerman/redirect-user-back-to-product.php
Created
February 7, 2021 09:46
-
-
Save haipham/1ae905a26c98ea61621d0f8649c089bf to your computer and use it in GitHub Desktop.
WooCommerce - After login, redirect the user back to the last viewed product
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* Add a hidden field to our WooCommerce login form - passing in the refering page URL | |
* Note: the input (hidden) field doesn't actually get created unless the user was directed | |
* to this page from a single product page | |
*/ | |
function redirect_user_back_to_product() { | |
// check for a referer | |
$referer = wp_get_referer(); | |
// if there was a referer.. | |
if( $referer ) { | |
$post_id = url_to_postid( $referer ); | |
$post_data = get_post( $post_id ); | |
if( $post_data ) { | |
// if the refering page was a single product, let's append a hidden field to reidrect the user to | |
if( isset( $post_data->post_type ) && $post_data->post_type == 'product' ) { | |
?> | |
<input type="hidden" name="redirect-user" value="<?php echo $referer; ?>"> | |
<?php | |
} | |
} | |
} | |
} | |
add_action( 'woocommerce_login_form', 'redirect_user_back_to_product' ); | |
/* | |
* Redirect the user back to the passed in referer page | |
* - Which should be the URL to the last viewed product before logging | |
*/ | |
function custom_woocommerce_login_redirect_back_to_product_page( $redirect, $user ) { | |
if( isset( $_POST['redirect-user'] ) ) { | |
$redirect = esc_url( $_POST['redirect-user'] ); | |
} | |
return $redirect; | |
} | |
add_filter( 'woocommerce_login_redirect', 'custom_woocommerce_login_redirect_back_to_product_page' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment