Woocommerce:根据特定内容隐藏完整产品描述的实现方案
WooCommerce产品描述模块条件隐藏实现方案
直接通过WooCommerce原生钩子实现,无需修改主题模板文件,代码添加后即可生效。
实现代码
将以下代码添加到当前活跃主题的functions.php文件末尾,或者自定义功能插件的代码文件中:
// 条件隐藏WooCommerce产品描述模块 add_action( 'woocommerce_single_product_summary', 'conditionally_hide_product_description', 10 ); function conditionally_hide_product_description() { global $product; // 可自定义需要触发隐藏的关键词列表 $hide_trigger_keywords = [ 'no description available', '暂无可用描述', '无产品描述' ]; $product_desc = $product->get_description(); // 不区分大小写匹配关键词,命中则移除描述模块 foreach ( $hide_trigger_keywords as $keyword ) { if ( stripos( $product_desc, $keyword ) !== false ) { // 若你的主题修改了描述模块的挂载优先级,将下面的20改为对应优先级即可 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_description', 20 ); break; } } }
说明
- 代码优先级设置为10,早于WooCommerce默认描述模块的输出优先级(20),确保移除操作生效
- 使用
stripos实现不区分大小写匹配,如需严格区分大小写,可替换为strpos - 你可以根据需求自行调整
$hide_trigger_keywords数组中的关键词,添加更多需要触发隐藏的内容
兼容方案(主题自定义描述输出时使用)
如果上面的代码不生效,说明你的主题修改了产品描述的默认挂载位置,可以使用内容过滤方案实现:
add_filter( 'the_content', 'conditionally_clear_product_description', 10 ); function conditionally_clear_product_description( $content ) { // 仅在产品详情页主查询生效,避免影响其他页面内容 if ( is_product() && in_the_loop() && is_main_query() ) { global $product; $hide_trigger_keywords = [ 'no description available', '暂无可用描述', '无产品描述' ]; $product_desc = $product->get_description(); foreach ( $hide_trigger_keywords as $keyword ) { if ( stripos( $product_desc, $keyword ) !== false ) { // 同时隐藏描述标题 add_filter( 'woocommerce_product_description_heading', '__return_empty_string' ); return ''; } } } return $content; }
注意事项
- 修改代码前建议提前备份站点文件,避免语法错误导致站点异常
- 若站点开启了缓存功能,添加代码后需要清空缓存才能看到效果
内容的提问来源于stack exchange,提问作者flulu
相关产品推荐
相关产品推荐

