WordPress饼图数值自动取整问题:如何修改相关设置?
看来你遇到了WPBakery Edge饼图自动把14.3取整成14%的麻烦,我来分享几个可行的解决方向:
深挖模块的隐藏设置
很多时候WPBakery的模块会把精细控制选项藏在「高级」标签或者「样式」标签的折叠菜单里。你可以回到饼图的编辑界面,仔细检查每个标签页,尤其是那些带有「展开更多」箭头的区域,看看有没有「数值格式」「小数位数」「百分比精度」这类选项——有些模块默认会把小数取整,可能只需要把精度调到1位小数就能解决。排除缓存干扰
别忽略最简单的情况:有时候你修改了设置,但网站缓存(比如WP Rocket、W3 Total Cache)或者浏览器缓存没更新,导致前端还是显示旧的取整数值。先清一遍网站后台的缓存,再按Ctrl+Shift+R强制刷新浏览器页面,确认是不是缓存的锅。用自定义JavaScript强制保留小数
如果可视化设置里确实没有相关选项,就需要用代码干预了。Edge饼图通常基于Chart.js,你可以通过自定义JS来修改数值的格式化逻辑。把下面的代码加到主题的「自定义JavaScript」区域(或者子主题的js文件里):jQuery(document).ready(function($) { // 定位Edge饼图元素,根据实际情况调整选择器 $('.wpb_edge_pie_chart').each(function() { const chartInstance = $(this).data('chart'); if (!chartInstance) return; // 修改tooltip的数值显示格式,保留1位小数 chartInstance.options.tooltip.callbacks.label = function(context) { const label = context.label || ''; const percentage = context.parsed; return `${label}: ${percentage.toFixed(1)}%`; }; // 如果饼图中心有显示数值,同步修改中心文本的格式 if (chartInstance.options.plugins?.centerText) { chartInstance.options.plugins.centerText.text = function(chart) { const total = chart.data.datasets[0].data.reduce((sum, val) => sum + val, 0); const targetValue = chart.data.datasets[0].data[0]; return `${((targetValue / total) * 100).toFixed(1)}%`; }; } // 更新饼图配置 chartInstance.update(); }); });通过PHP钩子过滤饼图数据
另一种方法是用WP的过滤钩子直接修改饼图的原始数据,避免前端处理的误差。把下面的代码加到主题的functions.php文件里(建议用子主题,避免主题更新丢失):add_filter('vc_edge_pie_chart_data', 'custom_edge_pie_decimal_precision', 10, 2); function custom_edge_pie_decimal_precision($chart_data, $atts) { // 可以通过自定义类名定位目标饼图,比如给饼图加个「keep-decimals」的类 if (isset($atts['el_class']) && strpos($atts['el_class'], 'keep-decimals') !== false) { foreach ($chart_data as &$item) { // 保留1位小数,按需调整第二个参数 $item['value'] = number_format($item['value'], 1, '.', ''); } } return $chart_data; }记得给目标饼图模块添加「keep-decimals」的自定义类(在模块的「高级」标签里找「CSS类」选项),这样代码只会作用于这个饼图,不会影响其他模块。
检查主题的集成设置
有些主题会对WPBakery的模块做定制扩展,可能在主题自己的选项面板里有饼图的精度控制。你可以去主题的「设置」「自定义」页面看看有没有相关的选项。
内容的提问来源于stack exchange,提问作者Darina Poddubnaya

