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

WordPress 4.9.2中Visual Composer 5.1的textarea_html功能异常求助

解决WordPress 4.9.2 + Visual Composer 5.1中自定义短代码HTML无法保存的问题

嘿,我之前碰到过类似的坑,你这个问题主要是两个关键点没处理到位:VC的textarea_html参数配置,还有内容获取的逻辑,我给你一步步捋清楚:

1. 先修正vc_map里的参数配置

你当前的textarea_html参数缺了一个关键配置项save_always,VC默认会对内容做过滤,加上这个就能强制保存原始的HTML格式。修改后的参数代码如下:

array( 
    "type" => "textarea_html", 
    "class" => "", 
    "heading" => esc_html__("Description",'snsanton'), 
    "param_name" => "product_excerpt", 
    "value" => "", 
    "save_always" => true, // 新增这一行,强制保存HTML内容
    "description" => esc_html__("Custom the description for the product.", 'snsanton'), 
),

2. 纠正短代码渲染函数的内容获取逻辑

这里有个很容易踩的VC专属坑:textarea_html类型的参数,它的实际内容不是存在你设置的param_name(也就是$product_excerpt)里,而是作为短代码的$content参数传递的!

所以你的短代码渲染函数要这么写,才能正确拿到带HTML格式的内容:

function sns_test_shortcode($atts, $content = null) {
    // 提取其他短代码参数(如果有的话)
    $atts = shortcode_atts(array(
        // 比如你有其他参数可以放在这里
        // 'title' => 'Default Title',
    ), $atts);

    // 把VC传递的$content赋值给你的变量,或者直接使用$content
    $product_excerpt = $content;

    // 用wp_kses_post安全输出,既保留合法HTML标签,又避免恶意代码
    return '<div class="sns-test-description">' . wp_kses_post($product_excerpt) . '</div>';
}
add_shortcode('sns_test', 'sns_test_shortcode');

3. 排查是否有其他过滤干扰

如果上面两步做完还是没解决,那可能是主题或其他插件的过滤函数把HTML标签去掉了,可以试试:

  • 临时切换到WordPress默认主题(比如Twenty Seventeen)测试
  • 禁用除VC外的所有插件,看问题是否消失
  • 检查主题的functions.php里有没有用wp_kses、strip_tags这类函数过滤短代码内容

按这几步来,应该就能解决<strong>、<i>这些标签无法保存格式的问题了。

内容的提问来源于stack exchange,提问作者Faiçal Jebali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:28:25