我需要为WP创建一些小部件,并且在小部件的设置中将textarea
,用户可以在其中插入一些JS代码。然后我的小部件必须使用此函数将此代码注入WP的footer.php
:
add_action( 'wp_footer', 'inject_js', 10 );
在我的inject_js
中,我有:
function inject_js () {
echo esc_attr( get_option('js_code') );
}
一切正常,代码插入到 HTML 中,但我遇到了一个问题。在我的 HTML 中,我得到这样的东西:
<!-- BEGIN JS widget -->
<script type="text/javascript">
var __cp = {
id: "J4FGckYPdasda21OaTnqo6s7kMgeGXdTBAb6SgXMD-A"
};
据我了解,我从用户textarea
中获取了string
类型的代码,我必须对引号和其他符号做一些事情,但我真的不知道如何解决这个问题,因为我是 PHP 的新手。
我必须使用什么PHP函数,或者可以使用某些WP函数?
我试过了:
echo htmlspecialchars(esc_attr( get_option('js_code') ));
和
echo addslashes(esc_attr( get_option('js_code') ));
但没有任何帮助。
你看到了esc_attr
的效果 - 该函数是HTML编码(其他东西)字符串。
它专为不受信任的用户输入而设计。由于您的代码专门设计用于接受来自受信任来源(网站所有者)的 javascript,因此不要使用它。
echo get_option('js_code');
将您的
代码包装在这个 :- 像这样:
html_entity_decode(esc_attr( get_option('js_code')));