致命错误:调用未定义的函数wp_create_nonce()

时间:2011-10-08 作者:Laxmidi

我正在尝试向插件的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);
    });
有什么建议可以解决这个问题吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

更多的背景知识会有所帮助。这是插件或函数文件中直接找到的所有代码吗?或者你是通过add_action.

不管怎样,可能是你打电话wp_localize_scriptwp_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 );
}

结束

相关推荐

为什么我需要在使用wp_nonce_field()之前检查它是否存在

我真的不明白为什么在运行nonce函数之前要检查它是否存在。。。if ( function_exists(\'wp_nonce_field\') ) wp_nonce_field(\'gmp_nonce_check\'); 我理解它的向后兼容性。。。还要注意您是如何验证wp_nonce_field 函数在尝试调用它以实现向后兼容性之前已存在但如果我在邮件背面检查,它会不会破裂if ( isset($_POST[\'submit\']) ) { check_a