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

Posted

技术标签:

【中文标题】Woocommerce 继续购物按钮链接到最后一个产品类别页面【英文标题】:Woocommerce Continue Shopping Button Link to Last Product Category Page 【发布时间】:2018-12-22 07:10:21 【问题描述】:

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

/* 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】:

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

首先是创建一个自定义操作,检查页面是否为类别页面,如果是,则将类别 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。

【讨论】:

嗨帕特里克!感谢你的回复。我不认为我明白你的意思。能够链接到最后一个类别页面视图的插件使用以下代码来执行此操作(我认为)。也许有一种方法可以结合使用上面的代码来创建按钮和添加正确的链接? (我将使用其他代码编辑我的问题) 我在您的代码中添加并替换了操作代码。之前和之后我还有什么需要做的吗?我不明白那部分。我已经用那个代码试过了,它的行为方式是一样的。链接指向商店页面。

以上是关于Woocommerce 继续购物按钮链接到最后一个产品类别页面的主要内容,如果未能解决你的问题,请参考以下文章

php WooCommerce:在购物车页面上添加继续购物按钮

将添加到购物车按钮替换为链接到 WooCommerce 3 中商店页面上的产品页面的更多内容

更改 WooCommerce 迷你购物车小部件上的购物车和结帐按钮链接

将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别

自定义特定 WooCommerce 产品类别上的“添加到购物车”按钮

Woocommerce 自定义添加到购物车循环