我正在尝试向插件的Ajax中添加一个nonce。我不确定为什么会出现此错误:
致命错误:调用未定义的函数wp\\u create\\u nonce()
在我的php文件中:
wp_localize_script(\'my-ajax-handle\', \'the_ajax_script\', array(\'ajaxurl\'=> admin_url(\'admin-ajax.php\'), \'my_nonce\' => wp_create_nonce(\'myajax-nonce\')));
在js文件中:
jQuery.post(the_ajax_script.ajaxurl, {my_nonce : the_ajax_script.my_nonce}, jQuery("#theForm").serialize() + "&maxLat="+ map_bounds[0] + "&maxLong="+ map_bounds[1] + "&minLat="+ map_bounds[2] + "&minLong="+ map_bounds[3],
function(response_from_the_action_function){
jQuery("#response_area").html(response_from_the_action_function);
});
有什么建议可以解决这个问题吗?
非常感谢。
最合适的回答,由SO网友:chrisguitarguy 整理而成
更多的背景知识会有所帮助。这是插件或函数文件中直接找到的所有代码吗?或者你是通过add_action
.
不管怎样,可能是你打电话wp_localize_script
和wp_enqueue_script
在动作之外。wp_create_nonce
, 或者,更确切地说,它所在的文件尚未加载。
解决方法是打电话wp_localize_script
从连接到的函数内部wp_enqueue_scripts
<?php
add_action( \'wp_enqueue_scripts\', \'wpse30583_enqueue\' );
function wpse30583_enqueue()
{
// your enqueue will probably look different.
wp_enqueue_script( \'wpse30583_script\' );
// Localize the script
$data = array(
\'ajax_url\' => admin_url( \'admin-ajax.php\' ),
\'nonce\' => wp_create_nonce( \'wpse30583_nonce\' )
);
wp_localize_script( \'wpse30583_script\', \'wpse3058_object\', $data );
}