WooCommerce产品标签显示变体维度致其他标签无内容
解决WooCommerce产品标签替换后其他标签消失的问题
我来帮你搞定这个问题!你遇到的其他标签消失+原描述内容丢失的问题,核心原因有两个:一是你的代码完全替换了描述标签的回调函数,却没有保留原本的产品描述内容;二是没有处理非可变产品的情况,当产品不是变体类型时,$available_variations[0]会触发报错,直接中断页面渲染,导致后续的其他标签无法加载。
下面是修复后的完整代码,我会标注关键修改点:
// 修改产品描述标签的回调逻辑 add_filter( 'woocommerce_product_tabs', 'woo_custom_description_tab', 98 ); function woo_custom_description_tab( $tabs ) { // 先保存原描述标签的回调函数,避免完全覆盖原有内容 $original_description_callback = $tabs['description']['callback']; // 用匿名函数重写回调:先输出原描述,再追加尺寸信息 $tabs['description']['callback'] = function() use ( $original_description_callback ) { // 调用原回调输出产品默认描述 call_user_func( $original_description_callback ); // 追加我们的变体尺寸信息 woo_custom_variation_dimensions(); }; return $tabs; } // 单独封装变体尺寸输出逻辑 function woo_custom_variation_dimensions() { global $product; // 仅针对可变产品执行逻辑,避免非变体产品报错 if ( ! $product->is_type( 'variable' ) ) { return; } $available_variations = $product->get_available_variations(); // 检查是否存在可用变体 if ( empty( $available_variations ) ) { return; } // 获取第一个变体的信息 $variation_id = $available_variations[0]['variation_id']; $variable_product = new WC_Product_Variation( $variation_id ); // 提取尺寸数据,避免空值输出 $length = $variable_product->get_length(); $width = $variable_product->get_width(); $height = $variable_product->get_height(); $dimension_unit = get_option( 'woocommerce_dimension_unit' ); // 只有存在尺寸数据时才输出 if ( empty( $length ) && empty( $width ) && empty( $height ) ) { return; } // 结构化输出尺寸信息,注意闭合HTML标签 echo '<div class="product-variation-dimensions">'; echo '<strong>Product Box Dimensions</strong>'; if ( ! empty( $length ) ) { echo '<div class="dimensions-item">Length: ' . esc_html( $length ) . ' ' . esc_html( $dimension_unit ) . '</div>'; } if ( ! empty( $width ) ) { echo '<div class="dimensions-item">Width: ' . esc_html( $width ) . ' ' . esc_html( $dimension_unit ) . '</div>'; } if ( ! empty( $height ) ) { echo '<div class="dimensions-item">Height: ' . esc_html( $height ) . ' ' . esc_html( $dimension_unit ) . '</div>'; } echo '</div>'; }
关键修改说明:
- 保留原描述内容:不再直接替换回调函数,而是先调用原回调输出产品默认描述,再追加尺寸信息,避免原描述丢失。
- 增加类型判断:仅对可变产品执行尺寸输出逻辑,非变体产品直接跳过,避免报错中断页面渲染。
- 安全输出处理:使用
esc_html()转义输出内容,避免XSS安全风险。 - 完善HTML结构:闭合所有标签,避免因布局混乱导致的页面渲染异常(这也是其他标签消失的潜在原因)。
内容的提问来源于stack exchange,提问作者Cameron Versluis
相关产品推荐
相关产品推荐

