There is no functionality provide WooCommerce to retrieve last category page viewed. But, I solved.
First create a custom action, check if page is category page, and set Cat ID to session data if so. Then on your button, use this to get proper URL.
add_action( 'init', 'wp_check_product_cat_sess');
function wp_check_product_cat_sess(){
if(!session_id()){
session_start();
}
}
add_action( 'wp', 'check_product_cats');
function check_product_cats(){
global $wp_query;
if( is_product_category() ){
$_SESSION['set_last_cat_id'] = $wp_query->get_queried_object()->term_id;
}
if( is_product() ){
$get_cats = get_the_terms( $wp_query->get_queried_object(), 'product_cat' ) ;
if( count( $get_cats ) > 0 ){
foreach($get_cats as $one_cat ){
$_SESSION['set_last_cat_id'] = $one_cat->term_id;
}
}
}
if( is_cart()){
//var_dump( $_SESSION['set_last_cat_id'] );
}
}
add_filter( 'woocommerce_continue_shopping_redirect', 'woo_add_continue_shop_btn_to_cart', 20 );
function woo_add_continue_shop_btn_to_cart($return_to){
if( isset( $_SESSION['set_last_cat_id'] ) ){
$redirect_page_url = get_term_link( $_SESSION['set_last_cat_id'], 'product_cat' );
}else{
$redirect_page_url = get_permalink( wc_get_page_id( 'shop' ) );
}
return $redirect_page_url;
}
-------------------------------------------------
Let me know your thoughts and questions in the comments.
Email: vyasankit2008@gmail.com
No comments:
Post a Comment