Tuesday, 21 August 2018

Continue Shopping To Redirect Category Page Woocommerce


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