私は自分のプラグインのAjaxにnonceを追加しようとしています。このエラーが発生した理由はわかりません。
致命的なエラー:未定義関数wp_create_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);
});
これを解決する方法について何か提案はありますか?
ありがとうございました。
より多くのコンテキストが参考になります。すべてのコードがあなたのプラグインや関数ファイルに直接あるのですか?それとも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 );
}