我创建了一个wordpress主题,在wordpress主题定制器中我添加了几个文本区域,用户可以输入自己的CSS或JS添加到头部。
文本区域的放置很好,即当用户添加代码时,它会显示在页面的正确位置,但格式不同。
例如,我将以下代码添加到其中一个textareas:
jQuery(document).ready(function($){
$('full_page').css('min-height',($(window).height()-195));
});
在我的主题中它输出如下:
jQuery(document).ready(function($){
$('full_page').css('min-height',($(window).height()-195));
});
如您所见,'
正在被'
以下是我的customizer.php文件中用于创建文本区域的代码:
$controls[] = array(
'type' => 'textarea',
'setting' => 'js',
'label' => __( 'Custom JS', 'skizzar_bootstrap' ),
'subtitle' => __( 'You can write your custom JavaScript/jQuery here. The code will be included in a script tag appended to the top of the page.', 'skizzar_bootstrap' ),
'section' => 'advanced',
'priority' => 6,
'default' => '',
);
有没有办法阻止这种格式化?
答案 0 :(得分:0)
Wordpress是HTML编码所有特殊字符。如果用户输入HTML,那么结果应该没问题。它不适用于Javascript。
允许用户输入Javascript,这是一个很大的安全漏洞。脚本可以做任何事情,不一定都是愉快的。
如果您真的想要这样做并且您的代码在您的主题中回显Javascript,请在显示之前通过htmlspecialchars_decode运行它。该PHP函数将HTML代码转换回字符。