将javascript数组传递给短码

时间:2017-01-04 作者:Inglebard

我试图将javascript数组传递给一个短代码,但它似乎已被清理/转义。例如,此字符“[”生成“`{`”。检索原始数据的函数是什么?

下面是一个短代码示例:

[shortcode jsarray="[{start:"19:30",end:"21:00",color:\'#d99694\'},{start:"20:00",end: "21:30",color:\'#d99694\'},],"]
Some text
[/shortcode]
以下是我的快捷码渲染函数:

public function render_html($atts,$content)
{
    $atts = shortcode_atts(array(\'jsarray\' =>\'\'), $atts);

    $jsarray=$atts[\'jsarray\'];
    if(empty($jsarray))
    {
        return;
    }

    ob_start(); ?>
        <div  data="<?php echo base64_encode($jsarray) ?>">
           <?php echo $content; ?>
        </div>
    <?php
    return ob_get_clean();
}
编辑:以下是shortcode\\u atts函数的结果:

`{`{``start``:``19:30``, ``end``:``21:00``, ``color``:``#d99694``}, {``start``:``19:30``, ``end``:``21:00``, ``color``:``#d99694``}`}`

1 个回复
SO网友:iguanarama

除了括号,你还会遇到其他问题,因为shortcode_parse_atts 已经解析了属性,各种单引号和双引号将混淆用于解析属性的正则表达式。

如果您需要确切的字符串,也许可以从自定义字段中获取。或者,更好的是,您可以为您的短代码指定许多属性(time1start、time1end、time1color等),并在后端重建Javascript。

相关推荐

WP管理员缺少图标、大量的JavaScript错误,但仅当SCRIPT_DEBUG为FALSE时

我可以访问一台Linux/Apache服务器,在那里我试图部署WordPress。为了避免这个错误,我用默认的2017主题和所有禁用的插件对其进行了测试。当我以管理员身份登录到任何wp admin页面时,左侧导航中的大多数图标都会丢失,选中的复选框没有任何复选框(例如),浏览器控制台会充满JavaScript错误。例如,在仪表板页面上,没有任何图标可见,错误控制台的内容如下:Uncaught TypeError: a.widget is not a function at load-scripts