如何修改WooCommerce代码仅针对指定产品类别跳转外部商品至产品页
修改WooCommerce外部商品链接跳转代码,仅针对特定产品类别生效
你之前的代码会让全站所有外部商品的商店页链接都跳转到产品详情页,现在要改成只对指定分类下的外部商品生效——之前用is_product_category()没成功,是因为这个函数判断的是当前页面是否为产品分类页,而我们需要的是判断商品本身是否属于目标分类,得换个方法。
下面是修改后的代码,核心用$product->has_term()来检查商品归属的分类:
add_filter( 'woocommerce_loop_add_to_cart_link', 'ts_link_external_product_page', 16, 3 ); function ts_link_external_product_page( $button, $product, $args ) { $url = $product->add_to_cart_url(); $button_text = $product->add_to_cart_text(); // 定义需要生效的产品分类Slug,替换成你自己的分类别名 $target_categories = array( 'catslugurl', 'anothercatslugurl' ); // 仅当商品是外部类型,且属于指定分类时,修改链接和按钮文字 if ( 'external' === $product->get_type() && $product->has_term( $target_categories, 'product_cat' ) ) { $url = $product->get_permalink(); $button_text = "查看详情"; } return sprintf( '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>', esc_url($url), esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ), esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ), isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '', esc_html( $button_text) ); }
使用提示:
- 把
$target_categories数组里的内容换成你需要的分类Slug(比如分类URL是你的店铺域名/product-category/数码产品/,那Slug就是数码产品) - 将修改后的代码替换原代码,添加到主题的
functions.php文件或自定义代码插件中即可生效
内容的提问来源于stack exchange,提问作者Stu
相关产品推荐
相关产品推荐

