WordPress单引号JSON问题


WordPress Single Quote JSON Issue

在WordPress短代码函数中,我有以下内容:

$args=shortcode_atts( array(
   'setting1' => 'value1',
   'setting2' => 'value2'
), $atts);

return '<div data-myData=''{' . json_encode( $args ) . '}'' ></div>';

我试图检索参数并返回HTML字符串。这个html应该看起来像:

<div data-myData='{ "setting1" : "value1" , "setting2" : "value2" }'></div>

然后一些JS从那里拾取它。然而,似乎无论我如何处理,WP一直在data-myData属性上将我的单引号转换为双引号,我最终得到了这个:

<div data-myData="{ "setting1" : "value1" , "setting2" : "value2" }"></div>

我是不是错过了什么简单的东西?谢谢!

在html上下文中插入JSON,因此需要使用特定于html的引用方法:

return '<div data-myData="' . htmlspecialchars(json_encode( $args )) . '"></div>';
                              ^^^^^^^^^^^^^^^^