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


Insert javascript string into HTML with PHP in WP

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