我需要为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') ));
但没有任何帮助。
答案 0 :(得分:2)
您正在看到esc_attr
的效果 - 该函数是html编码(其他东西)字符串。
它专为不受信任的用户输入而设计。由于您的代码专门用于接受来自受信任来源(网站所有者)的javascript,因此请勿使用它。
echo get_option('js_code');
答案 1 :(得分:1)
将代码包装成: - 像这样:
html_entity_decode(esc_attr( get_option('js_code')));