定制器中的自定义JS文本区域在文档中的格式错误

时间:2015-02-04 作者:Sam Skirrow

我创建了一个wordpress主题,在wordpress主题定制器中,我添加了几个文本区域,用户可以在其中输入自己的CSS或JS添加到头部。

文本区域的位置很好,即当用户添加代码时,它会显示在页面的正确位置,但格式不同。

例如,我将以下代码添加到其中一个文本区域:

jQuery(document).ready(function($){
    $(\'full_page\').css(\'min-height\',($(window).height()-195));  
});
在我的主题中,输出如下:

jQuery(document).ready(function($){
    $('full_page').css('min-height',($(window).height()-195));  
});
如您所见\' 正在替换为'

这是我的自定义程序中的代码。用于创建文本区域的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\'  => \'\',
    );
要在我的主题中输出,我使用:

<script><php echo get_theme_mod(\'js\'); ?></script>
有没有办法阻止这种格式化的发生?

1 个回复
SO网友:Aristeides

@sam skirrow刚刚在这里发布了我们为修复此问题所做的。。。

WordPress 4.1要求我们使用sanitize_callback 为自定义程序创建设置时进行筛选(有充分的理由)。因为你在使用kirki 框架来创建这些自定义设置,kirki detects that this is a textarea field and so it automatically applies the esc_textarea filter.

然而you can override this callback and use your own 在声明字段时,为了修复此问题,我们只需在此处添加一个js sanitization calback,而不是esc_textarea.

结束