在WP中使用PHP将javascript字符串插入HTML

时间:2016-01-14 16:28:35

标签: javascript php html wordpress

我需要为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') ));

但没有任何帮助。

2 个答案:

答案 0 :(得分:2)

您正在看到esc_attr的效果 - 该函数是html编码(其他东西)字符串。

它专为不受信任的用户输入而设计。由于您的代码专门用于接受来自受信任来源(网站所有者)的javascript,因此请勿使用它。

echo get_option('js_code');

答案 1 :(得分:1)

将代码包装成: - 像这样:

 html_entity_decode(esc_attr( get_option('js_code')));