使用shortcode替换Woocommerce分类描述时影响单品页问题排查
代码问题说明
你提供的代码存在两个核心错误,导致异常影响单产品页:
- 钩子选择错误:你所挂载的
woocommerce_short_description过滤器是单产品页产品简短描述的专属控制钩子,分类页的分类描述对应独立的专属钩子,挂错钩子自然会侵入单产品页的内容逻辑。 - 分支返回逻辑错误:代码中
if (! is_product_category()) { return; }的写法,会在非商品分类页场景下直接返回空值,直接清空了该钩子在其他所有页面的原有输出内容,直接导致单产品页的产品短描述被清空。
修复方案
方案1:修正原有代码逻辑(仅修复现有错误,不推荐)
如果暂时不想更换钩子,只需要把非分类页场景的原有内容原样返回即可,不要返回空值:
add_filter('woocommerce_short_description', function ($description) { if (is_product_category()) { return do_shortcode('[porto_block id="510079"]'); } return $description; });
方案2:更换为分类描述专属钩子(推荐,完全不影响单产品页)
直接挂载到Woocommerce分类存档页的描述钩子上,从根源上避免影响其他页面逻辑:
add_filter('woocommerce_category_archive_description', function ($category_description) { // 若需要不同分类对应不同的porto_block,可在此处获取当前分类的自定义字段值替换固定id return do_shortcode('[porto_block id="510079"]'); });
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

