如何为WooCommerce单产品页面的指定产品添加多个自定义选项卡
错误点梳理
- 注册
woocommerce_product_tabs过滤器时没有指定接收参数数量,默认仅传入1个$tabs参数,你声明的第二个参数$post_id无法正常获取产品ID - 匹配到指定产品ID的逻辑分支内,你直接返回了单个选项卡的配置数组,直接覆盖了整个选项卡列表,会导致页面丢失所有原有选项卡
woocommerce_product_tabs钩子本身默认不传递$post_id作为第二个参数,这个参数的写法本身不符合钩子的参数规则
修正后代码
add_filter( 'woocommerce_product_tabs', 'artwork_product_tab', 10, 1 ); function artwork_product_tab( $tabs ) { // 获取当前产品ID $post_id = get_the_ID(); // 仅ID为8125的产品显示Artwork Guidelines选项卡 if( in_array( $post_id, array( 8125 ) ) ){ $tabs['artwork_guidelines'] = array( 'title' => __( 'Artwork Guidelines', 'woocommerce' ), 'priority' => 50, 'callback' => 'artwork_product_tab_content' ); } // 所有产品都显示Standard Sizes选项卡 $tabs['standard_sizes'] = array( 'title' => __( 'Standard Sizes', 'woocommerce' ), 'priority' => 60, 'callback' => 'standard_sizes_product_tab_content' ); return $tabs; }
实现效果
- 所有产品页面都会正常展示
Standard Sizes选项卡 - 只有ID为8125的产品页面会额外展示
Artwork Guidelines选项卡 - 不会影响产品页原有默认选项卡(描述、评论、库存信息等)的正常展示
内容的提问来源于stack exchange,提问作者Pauly92
相关产品推荐
相关产品推荐

