Wordpress Customizer文本区域正在改变我输出的HTML

时间:2015-02-04 10:52:14

标签: php html wordpress formatting themes

我创建了一个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'  => '',
    );

有没有办法阻止这种格式化?

1 个答案:

答案 0 :(得分:0)

Wordpress是HTML编码所有特殊字符。如果用户输入HTML,那么结果应该没问题。它不适用于Javascript。

允许用户输入Javascript,这是一个很大的安全漏洞。脚本可以做任何事情,不一定都是愉快的。

如果您真的想要这样做并且您的代码在您的主题中回显Javascript,请在​​显示之前通过htmlspecialchars_decode运行它。该PHP函数将HTML代码转换回字符。