You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义WPBakery元素保存时报Cannot read properties of null (reading 'length')错误

问题解决方案

你遇到的这个报错是WPBakery处理param_group类型参数时的典型空值异常,具体修复方案如下:

报错根源

JS报错Uncaught TypeError: Cannot read properties of null (reading 'length')是因为你定义的listing_item参数组存在空值字段,WPBakery前端保存逻辑遍历参数属性时,尝试读取null值的length属性触发异常。
前端展示正常是因为你在输出时做了(array)强转和empty判断,自动过滤了无效项,没有触发PHP错误,但是WPBakery的JS保存逻辑不会跳过空值,所以仅在保存时报错。

修复步骤

1. 修改短码输出逻辑,增加空值兼容

找到output_html方法中遍历listing_item的代码段,将原逻辑:

<?php
$icon = $item['icon_' . $item['type']];
vc_icon_element_fonts_enqueue($item['type']);
?>

替换为增加空值判断的版本:

<?php
// 兼容type字段空值,默认值和你vc_map中定义的图标库默认值保持一致即可
$item_type = isset($item['type']) ? $item['type'] : 'fontawesome';
$icon = isset($item['icon_' . $item_type]) ? $item['icon_' . $item_type] : '';
if ($item_type) {
    vc_icon_element_fonts_enqueue($item_type);
}
?>

同时修改icon输出逻辑,增加空值判断:

<?php if ($item['upload'] == 'icon' && !empty($icon)): ?>
    <span class="icon"><span class="<?php echo esc_attr($icon) ?>"></span></span>
<?php elseif ($item['upload'] == 'image' && isset($item['image'])): ?>
    <span class="image"><?php echo wp_get_attachment_image($item['image'], 'full'); ?></span>
<?php endif; ?>

2. 完善vc_map参数配置,给所有字段加默认值

在你注册azirspares_listing短码的vc_map配置中,找到listing_item参数组的params配置,给每个字段设置默认值,示例如下:

array(
    'type' => 'param_group',
    'param_name' => 'listing_item',
    'params' => array(
        // 给type字段加默认值
        array(
            'type' => 'dropdown',
            'param_name' => 'type',
            'std' => 'fontawesome', // 替换为你实际使用的默认图标库
            // 其余原有配置保留
        ),
        // 给upload字段加默认值
        array(
            'type' => 'dropdown',
            'param_name' => 'upload',
            'std' => 'icon',
            // 其余原有配置保留
        ),
        // 所有其他字段都加std默认值,空字段设为''即可
    ),
    // 其余原有配置保留
),

修改完成后清空缓存再测试保存即可解决报错。

内容的提问来源于stack exchange,提问作者BuGs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:57:03