Php WooCommerce重定向到“添加到购物车”上的产品类别

Php WooCommerce重定向到“添加到购物车”上的产品类别,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,当用户单击产品页面上的“添加到购物车”时,我试图将其重定向到上一个类别页面。但在重定向上,我看到一个空白的product_cat属性。i、 e.example.com/?product\u cat= 但是,如果我将其回显到woocommerce\u product\u缩略图中,它会完美地显示链接。i、 e.example.com/?product\u cat=shoes add_filter ('add_to_cart_redirect', 'redirect_to_previousCat');

当用户单击产品页面上的“添加到购物车”时,我试图将其重定向到上一个类别页面。但在重定向上,我看到一个空白的product_cat属性。i、 e.
example.com/?product\u cat=
但是,如果我将其回显到
woocommerce\u product\u缩略图
中,它会完美地显示链接。i、 e.
example.com/?product\u 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;
}

正如我在评论中提到的,当
add_to_cart_action()
方法在
init
钩子上运行时,还没有设置全局
$post

相反,我建议您遵循Wootheme的指导,从
$\u请求
全局获取产品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;
}

正如我在评论中提到的,当
add_to_cart_action()
方法在
init
钩子上运行时,还没有设置全局
$post

相反,我建议您遵循Wootheme的指导,从
$\u请求
全局获取产品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;
}

正如我在评论中提到的,当
add_to_cart_action()
方法在
init
钩子上运行时,还没有设置全局
$post

相反,我建议您遵循Wootheme的指导,从
$\u请求
全局获取产品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;
}

正如我在评论中提到的,当
add_to_cart_action()
方法在
init
钩子上运行时,还没有设置全局
$post

相反,我建议您遵循Wootheme的指导,从
$\u请求
全局获取产品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;
}

您是否尝试打印($post)?看看它是否有价值…@Reigel是的,它在woocommerce\u product\u缩略图上有价值。我用print\r($url)测试了它。我实际上认为,
$post
尚未设置。添加到购物车表单处理程序操作在
init
上运行。您可以
die(var_dump($post))add\u to\u cart\u redirect()。
woocommerce\u product\u缩略图()
在设置了
$post
之后会运行很久。顺便问一下,什么是
$product\u cat\u slug
?您是否尝试
打印($post)?看看它是否有价值…@Reigel是的,它在woocommerce\u product\u缩略图上有价值。我用print\r($url)测试了它。我实际上认为,
$post
尚未设置。添加到购物车表单处理程序操作在
init
上运行。您可以
die(var_dump($post))add\u to\u cart\u redirect()。
woocommerce\u product\u缩略图()
在设置了
$post
之后会运行很久。顺便问一下,什么是
$product\u cat\u slug
?您是否尝试
打印($post)?看看它是否有价值…@Reigel是的,它在woocommerce\u product\u缩略图上有价值。我用print\r($url)测试了它。我实际上认为,
$post
尚未设置。添加到购物车表单处理程序操作在
init
上运行。您可以
die(var_dump($post))add\u to\u cart\u redirect()。
woocommerce\u product\u缩略图()
在设置了
$post
之后会运行很久。顺便问一下,什么是
$product\u cat\u slug
?您是否尝试
打印($post)?看看它是否有价值…@Reigel是的,它在woocommerce\u product\u缩略图上有价值。我用print\r($url)测试了它。我实际上认为,
$post
尚未设置。添加到购物车表单处理程序操作在
init
上运行。您可以
die(var_dump($post))add\u to\u cart\u redirect()。
woocommerce\u product\u缩略图()
在设置了
$post
之后会运行很久。顺便问一下,什么是
$product\u cat\u slug