WordPress中Watupro测验HTML报告动态替换分类分数变量
替换Watupro测验分类分数为自定义等级的解决方案
要实现把Watupro的%%-CATEGORY-POINTS-X%%短码输出的分数替换成自定义等级(比如1→A、2→B等),核心思路是拦截原短码的数值输出,通过条件判断替换为对应标签。下面提供两种可行的实现方法:
方法一:通过钩子拦截原短码输出
这种方法不需要修改你原本的短码调用,直接通过WordPress的do_shortcode_tag钩子捕获Watupro短码的输出并替换。
- 将以下代码添加到你的主题
functions.php文件,或者自定义插件中:
add_filter('do_shortcode_tag', 'watupro_replace_category_points_with_grade', 10, 3); function watupro_replace_category_points_with_grade($output, $tag, $attr) { // 匹配Watupro的CATEGORY-POINTS短码格式 if (strpos($tag, 'CATEGORY-POINTS-') !== false) { // 获取原始分数值(转为整数) $points = intval($output); // 根据你的需求定义分数→等级的映射规则,可自行修改 switch($points) { case 1: $output = 'A'; break; case 2: $output = 'B'; break; case 3: $output = 'C'; break; case 4: $output = 'D'; break; default: $output = 'N/A'; // 处理未匹配的分数 break; } } return $output; }
- 保存代码后,直接在你的报告模板中使用原Watupro短码
%%-CATEGORY-POINTS-X%%即可,系统会自动把输出的数值替换成对应的等级。
方法二:创建自定义短码处理替换
如果你更倾向于用新的短码来调用,可以创建一个自定义短码,内部调用Watupro的短码并处理替换:
- 同样将以下代码添加到主题
functions.php或自定义插件:
add_shortcode('watupro_category_grade', 'watupro_category_grade_shortcode'); function watupro_category_grade_shortcode($atts) { // 获取传入的分类标识X $atts = shortcode_atts(array( 'category' => '', ), $atts); if (empty($atts['category'])) return ''; // 调用Watupro原短码获取分数 $points_shortcode = '%%-CATEGORY-POINTS-' . esc_attr($atts['category']) . '%%'; $points = intval(do_shortcode($points_shortcode)); // 分数→等级映射,可按需修改 $grade = match($points) { 1 => 'A', 2 => 'B', 3 => 'C', 4 => 'D', default => 'N/A' }; return $grade; }
- 在报告模板中使用自定义短码,比如
[watupro_category_grade category="X"](把X替换为你的实际分类标识)。
注意事项
- 可以根据你的实际需求修改
switch或match语句中的分数与等级对应关系,比如增加更多分数情况、调整等级标签。 - 如果使用主题的
functions.php,建议先备份文件,并且在主题更新后重新检查代码是否保留(最好使用自定义插件来存放代码,避免主题更新丢失)。 - 测试前确保Watupro的原短码能正常输出数值,再验证替换后的等级是否正确显示。
内容的提问来源于stack exchange,提问作者user9583164
相关产品推荐
相关产品推荐

