【问题标题】:WooCommerce redirect to product category on add to cartWooCommerce 在添加到购物车时重定向到产品类别
【发布时间】:2015-01-25 15:40:40
【问题描述】:

当用户单击产品页面上的添加到购物车时,我试图将用户重定向到上一个类别页面。但是在重定向时,我看到一个空白的 product_cat 属性。即example.com/?product_cat= 但是,如果我将其回显到woocommerce_product_thumbnail,它将完美地显示链接。即example.com/?product_cat=shoes

add_filter ('add_to_cart_redirect', 'redirect_to_previousCat');
//add_filter ('woocommerce_product_thumbnails', 'redirect_to_previousCat');
function redirect_to_previousCat() {
    global $woocommerce, $post;
    $product_cat_slug;
    $terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
    $product_cat_slug = $term->slug;
    break;
}
$url=get_site_url().'?product_cat='.$product_cat_slug;
return $url;
}

【问题讨论】:

  • 你试过print_r($post);吗?看看有没有价值……
  • @Reigel 是的,它在 woocommerce_product_thumbnails 上有值我用 print_r($url) 测试了它
  • 我实际上认为$post 尚未设置。添加到购物车表单处理程序操作在init 上运行。你可以在add_to_cart_redirect() 过滤器中die(var_dump($post)); 看到这个。 woocommerce_product_thumbnails()$post 设置后运行得更晚。对了,$product_cat_slug是什么?

标签: php wordpress woocommerce


【解决方案1】:

正如我在 cmets 中提到的,当 add_to_cart_action() 方法在 init 钩子上运行时,尚未设置全局 $post

相反,我建议您跟随 Wootheme 的领导,从 $_REQUEST 全局获取产品 ID。

add_filter ('add_to_cart_redirect', 'redirect_to_previousCat');

function redirect_to_previousCat( $url ) {
    $product_id = absint( $_REQUEST['add-to-cart'] );
    $product_cat_slug = '';

    $terms = get_the_terms( $product_id, 'product_cat' );
    foreach ( $terms as $term ) {
        $product_cat_slug = $term->slug;
        break;
    }
    if( $product_cat_slug ){
        $url = add_query_arg( 'product_cat', $product_cat_slug, site_url() );
    }
    return $url;
}

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2014-11-21
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多