如何在WooCommerce中基于产品ID或分类执行remove_action移除钩子
WooCommerce指定条件移除产品标题钩子解决方案
原代码失效原因
你编写的条件判断代码直接在全局作用域执行时,WordPress主查询尚未完成初始化,is_single这类页面条件标签无法正常识别当前页面属性,判断逻辑不会触发,因此移除钩子的操作无效。
方案1:针对指定产品ID移除标题钩子
将移除逻辑挂载到template_redirect钩子上执行,此时所有页面条件标签已可用,可正常判断当前产品是否为目标ID:
add_action( 'template_redirect', 'remove_specific_product_title' ); function remove_specific_product_title() { // 括号内替换为实际目标产品ID,多个ID可传入数组,示例:is_product( array(123, 456, 789) ) if ( is_product( 123 ) ) { remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 ); } }
方案2:针对指定产品分类下的所有产品移除标题钩子
通过has_term判断当前产品是否归属目标分类,产品分类对应的分类法为product_cat:
add_action( 'template_redirect', 'remove_category_product_title' ); function remove_category_product_title() { // 第一个参数替换为目标分类的ID、别名或名称,多个分类可传入数组 if ( is_product() && has_term( '目标分类别名', 'product_cat' ) ) { remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 ); } }
注意事项
remove_action的第三个参数必须和原钩子注册时的优先级完全一致,此处原钩子优先级为5,不可修改- 代码可添加到当前使用主题的
functions.php文件末尾,或自定义功能插件中,修改前建议备份站点文件避免语法错误导致站点异常
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

