如何在WooCommerce商店中禁用特定产品类别的链接
如何在WooCommerce中禁用特定产品类别的单品页面跳转链接
嘿,这个需求我之前帮朋友处理过,用纯代码就能搞定,不用额外装插件,给你两个实用方案,你根据自己的主题情况选就行:
方案1:通过functions.php添加过滤钩子(推荐,无需修改模板)
这个方法利用WooCommerce的内置钩子修改产品链接的输出逻辑,把代码加到子主题的functions.php文件里就行(别直接改父主题,不然主题更新后修改会丢失):
// 禁用特定产品类别的单品页面跳转链接 function disable_single_product_link_for_category( $permalink, $product ) { // 替换成你要禁用的产品类别slug(在产品类别编辑页可查看) $target_category = 'no-single-page'; // 检查当前产品是否属于目标类别 if ( has_term( $target_category, 'product_cat', $product->get_id() ) ) { // 返回#,点击不会跳转;如果想彻底移除a标签,改成return false; return '#'; } // 其他产品正常返回原链接 return $permalink; } add_filter( 'woocommerce_product_get_permalink', 'disable_single_product_link_for_category', 10, 2 ); add_filter( 'woocommerce_product_get_image_link', 'disable_single_product_link_for_category', 10, 2 );
代码说明:
$target_category:换成你实际要禁用的产品类别slug,比如你的类别叫「展示款」,slug可能是display-only,去产品类别编辑页就能看到。- 两个钩子分别处理产品名称和图片的链接,确保两者都被禁用。
- 要是把
return '#'改成return false,会直接不生成<a>标签,禁用效果更彻底。
方案2:修改主题的产品模板文件(适合自定义显示场景)
如果你的主题有自定义产品列表模板(比如content-product.php),可以直接修改这个文件控制链接显示逻辑:
- 找到子主题目录下的
woocommerce/content-product.php(没有的话,复制父主题对应文件到子主题)。 - 找到产品图片的代码块,大概是这样:
echo '<a href="' . esc_url( get_permalink( $product->get_id() ) ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">'; echo $product->get_image(); echo '</a>';
- 添加条件判断,只有不属于目标类别的产品才显示链接:
$target_category = 'no-single-page'; if ( !has_term( $target_category, 'product_cat', $product->get_id() ) ) { echo '<a href="' . esc_url( get_permalink( $product->get_id() ) ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">'; } echo $product->get_image(); if ( !has_term( $target_category, 'product_cat', $product->get_id() ) ) { echo '</a>'; }
- 用同样的逻辑处理产品名称的链接部分,确保名称也不会跳转。
注意事项:
- 一定要用子主题修改,避免主题更新覆盖你的改动。
- 修改后记得清除网站缓存(包括浏览器缓存和缓存插件的缓存),不然可能看不到效果。
- 如果你的主题用了自定义产品布局,可能需要找对应的模板片段文件修改。
内容的提问来源于stack exchange,提问作者Mohamed Ameen
相关产品推荐
相关产品推荐

