这是个好问题,我已经处理过了,但从来没有令人满意过。如果能找到一个处理这个问题的核心函数,那就太好了。
但与此同时,我会绕过整个localize_script
函数并将操作添加到wp_head
这只是定义了一个全局javascript对象,其中包含所有插件所需的信息。localize_script
对于这种情况,似乎有点过度使用了,虽然这种解决方案肯定不再优雅,但对我来说似乎更清楚:
add_action( \'wp_head\', \'localize_ajax_scripts\' );
if ( !function_exists( \'localize_ajax_scripts\' ) ) {
function localize_ajax_scripts() {
$ajaxurl = admin_url( \'admin-ajax.php\' );
echo <<<JS
<script type="javascript">
var ajax_object = {
ajaxurl: {$ajaxurl}
}
</script>
JS;
}
}
在一个钩子上添加两次相同的函数不会导致它触发两次,因此不必定义常量;只需避免多次定义函数。(如果您试图为不同的插件定义不同的功能来传递附加信息,那么您真的有麻烦了。)