如何让文本区域在我的设置中接受Java脚本?

时间:2014-05-15 作者:Lisandro Vaccaro

我正在构建一个简单的插件,通过在设置页面上定义代码,可以将代码添加到我们的站点标题中。然而,我还不能让它允许脚本。

这是我当前的代码:

public function sanitize( $input )
{
    $new_input = array();

    if( isset( $input[\'code\'] ) )
        $new_input[\'code\'] = sanitize_text_field( $input[\'code\'] );

    return $new_input;
}

public function code_callback()
{
    printf(
        \'<textarea type="text" id="code" name="pl-analytics[code]">%s</textarea>\',
        isset( $this->options[\'code\'] ) ? esc_attr( $this->options[\'code\']) : \'\'
    );
}
如何做到这一点?

1 个回复
SO网友:glitchmunki

如果不创建某种漏洞,就无法让JavaScript通过。但对输入的任何过滤也是如此。作为一名开发人员,您必须权衡功能与风险。

wp\\u kses()函数可能就是您要查找的。了解Otto\'s post 了解更多信息。

它也在Codex

下面是一个粗略的例子。未经测试,因为奇怪的是,我以前从未添加过脚本标记。

public function sanitize( $input )
{
    $new_input = array();

    $allowed = array(
        \'script\'    => array(
            \'src\' => array()
        )
    );

    if( isset( $input[\'code\'] ) )
        $new_input[\'code\'] = wp_kses( $input[\'code\'], $allowed );

    return $new_input;
}

结束