正如标题所述,我试图将JSON数据从PHP传递到WordPress环境中的HTML数据属性,但呈现的数据是用HTML实体而不是语音标记输出的。
注:此方法以前有效
功能:
function build_ga_tracking($category, $label, $action = 'click', $value = '', $event = 'event') {
$tracking = array(
'event' => $event,
'category' => $category,
'label' => $label,
'action' => $action,
'value' => $value
);
$jsonEncodedTracking = json_encode($tracking);
return "data-tracking='".$jsonEncodedTracking."'";
}
echo("<li><a href='" . $item->url . "' " . build_ga_tracking('Primary Menu', $cleanTitle, 'Click-'.$cleanTitle) . ">" . $title . "</a></li>");
字符串
其输出为:
<li><a href="http://localhost:8080/category/money-tips/" data-tracking="{"event":"event","category":"Primary Menu","label":"Money Tips","action":"Click-Money Tips","value":""}">Money Tips</a></li>
型
注:
echo(build_ga_tracking('Primary Menu', $cleanTitle, 'Click-'.$cleanTitle));
型
输出正确:
data-tracking='{"event":"event","category":"Primary Menu","label":"Money Tips","action":"Click-Money Tips","value":""}'
型
我试过使用esc_attr()
esc_js()
和wp_json_encode()
没有运气。
1条答案
按热度按时间jhdbpxl91#
这纯粹是Chrome开发工具的渲染问题。当检查源代码时,它正确输出。
两天的调试和一个巨大的脸手掌后。