如何将YITH WooCommerce动态定价折扣插件数量显示改为自定义文本
YITH分层价格表自定义数量区间展示调整方案
整体改动无需修改插件核心文件,仅在你准备覆盖的模板文件中,基于每条规则的最小购买量匹配预设的自定义展示文本即可,全程保留原有的data属性值,不会影响插件自带的数量联动高亮功能。
具体调整步骤
- 第一步:在遍历规则的循环代码之前,提前定义好自定义文本的映射数组。数组的键(key)为每条规则在后台设置的最小购买量数值,值(value)为你想要前端展示的自定义文本:
// 自定义数量区间展示文本映射,key对应规则设置的min_quantity值 $custom_qty_labels = [ 1 => '基础采购档(1-5件)', 6 => '批量优惠档(6-11件)', 12 => '大额专享档(12件及以上)' ]; - 第二步:替换原模板中自动拼接默认区间文本的代码段。替换逻辑为优先查询映射数组中是否存在当前规则对应的自定义文本,有则直接输出自定义内容,没有则保留插件原本的默认拼接逻辑作为兜底,避免漏配映射导致页面展示异常。
- 第三步:调整后的完整核心代码段如下,注意不要修改原有
<td>标签上的data-qtymin、data-qtymax属性值,这两个值是插件交互功能的依赖:
<table id="ywdpd-table-discounts" class="<?php echo $template; ?>"> <?php if ( 'horizontal' === $template ) : ?> <?php // 自定义数量区间展示文本映射,key对应规则设置的min_quantity值 $custom_qty_labels = [ 1 => '基础采购档(1-5件)', 6 => '批量优惠档(6-11件)', 12 => '大额专享档(12件及以上)' ]; ?> <tr class="quantity_row"> <th><?php echo wp_kses_post( $label_quantity ); ?></th> <?php foreach ( $rules as $rule ) : ?> <td class="qty-info" data-qtymin="<?php echo esc_attr( $rule['min_quantity'] ); ?>" data-qtymax="<?php echo esc_attr( $rule['max_quantity'] ); ?>"> <?php // 优先输出自定义展示文本 if ( isset( $custom_qty_labels[ $rule['min_quantity'] ] ) ) { echo esc_html( $custom_qty_labels[ $rule['min_quantity'] ] ); } else { // 无自定义配置时走插件默认展示逻辑 $minQ = $rule['min_quantity']; $maxQ = ''; if ( $rule['max_quantity'] !== $rule['min_quantity'] ) { $maxQ = ( '*' !== $rule['max_quantity'] ) ? '-' . $rule['max_quantity'] : '+'; } echo esc_html( $rule['min_quantity'] . $maxQ ); } ?> </td> <?php endforeach ?>
注意事项
- 自定义映射的key值必须和后台规则设置的最小购买量数值完全一致,否则会匹配不到自定义文本,自动回落为默认展示格式
- 不要修改
<td>标签上的data-qtymin、data-qtymax属性,插件的交互功能(比如用户输入购买数量时自动高亮对应优惠档位)完全依赖这两个属性的定位,修改后会导致联动功能失效 - 后续新增数量规则时,仅需在
$custom_qty_labels数组中补充对应规则的最小购买量和自定义文本即可,无需改动其他代码逻辑 - 调整后的模板文件按照插件官方的模板覆盖规则,放到当前主题的对应模板目录下即可,不要直接修改插件核心目录内的文件,避免插件更新时覆盖自定义改动
内容的提问来源于stack exchange,提问作者Saleh Alnaggar
相关产品推荐
相关产品推荐

