首页 文章

Woocommerce继续购物按钮链接到最后的产品类别页面

提问于
浏览
0

有关于自定义继续购物按钮的论坛主题,但没有关于如何将自定义按钮链接到查看的最后一个产品类别页面 . 有一个插件可以为此提供选项;然而,有一个缺陷是,当推车刷新时,按钮消失 . 以下代码用于创建自定义消息/按钮;但是,我无法弄清楚如何更改从商店页面到最后查看的产品类别页面的链接:

/* Add Continue Shopping Button on Cart Page & Checkout page*/
add_action( 'woocommerce_before_cart_table', 
'woo_add_continue_shopping_button_to_cart' );
add_action( 'woocommerce_before_checkout_form', 
'woo_add_continue_shopping_button_to_cart' );

function woo_add_continue_shopping_button_to_cart() {
$shop_page_url = "get_permalink( wc_get_page_id( 'shop' ) )";

echo '<div class="woocommerce-message">';
echo ' <a href="'.$shop_page_url.'" class="button wc-forwards">Continue 
Shopping →</a> Would you like some more prints?';
echo '</div>';
}

先感谢您! J.

这是插件用来链接的代码(我认为):

add_action( 'woocommerce_cart_is_empty', 'hpy_cs_output_notice', 1 );
function hpy_cs_output_notice() {

$display_empty = get_option( 'hpy_cs_empty_cart_notice' );

if ( $display_empty == 'yes' ) {
    $link = wc_custom_redirect_continue_shopping();

    $message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', 
esc_url($link), esc_html__('Continue shopping', 'woocommerce'), 
esc_html(get_option('hpy_cs_empty_cart_text', __('Your cart is empty.', '    
$message = sprintf( \'<a href="%s" class="button wc-forward">%s</a> %s\', 
esc_url( $link ), esc_html__( \'Continue shopping\', \'woocommerce\' ), 
esc_html( get_option( \'hpy_cs_empty_cart_text\', __( \'Your cart is 
empty.\', \'hpy_cshpy_cshpy_cs\' ) ) ) );
'))));

    wc_print_notice($message);
}

}

1 回答

  • 2

    没有内置函数来检索查看的最后一个类别页面 . 但是,我对如何解决这个问题有一些想法 .

    首先是创建自定义操作,检查页面是否为类别页面,如果是,则将类别ID设置为会话数据 . 然后在您的按钮上,使用此按钮获取正确的URL .

    /* Set up session */
    add_action( 'init', 'wp_check_for_product_cat_sess');
    function wp_check_for_product_cat_sess(){
        if(!session_id()) {
            session_start();
        }
    }
    
    /* Set session variable when on Category or Product page */
    add_action( 'wp', 'wp_check_for_product_cat');
    function wp_check_for_product_cat(){
            global $wp_query;
            if( is_product_category() ){ // This is Category; use my ID
                    $_SESSION['wp_last_cat'] = $wp_query->get_queried_object()->term_id;
            }
            if( is_product() ){ // This is Product; use my ID to get my Categories
                    $cats = get_the_terms( $wp_query->get_queried_object(), 'product_cat' ) ;
                    if( count( $cats ) > 0 ){
                            foreach($cats as $one_cat ){
                                    $_SESSION['wp_last_cat'] = $one_cat->term_id;
                            }
                    }
            }
    
            if( is_cart() ){
                    // Here we output only on Cart page, as debug tool */
                    var_dump( $_SESSION['wp_last_cat'] );
            }
    }
    

    然后你替换你的行动代码:

    $shop_page_url = "get_permalink( wc_get_page_id( 'shop' ) )";
    

    应该成为:

    if( isset( $_SESSION['wp_last_cat'] ) ){
        $shop_page_url = get_term_link( $_SESSION['wp_last_cat'], 'product_cat' );
    } else {
        $shop_page_url = get_permalink( wc_get_page_id( 'shop' ) );
    }
    

    其次是检索添加到购物车的最后一项,并使用该项检索其类别URL .

相关问题