質問: add_action( 'wp_ajax_ [アクション名]'、myfunction)問題 私はwpコーデックスのガイドラインを使用してワードプレスにajaxを統合しようとしています。 phpに追加しました:wp_enqueue_script ( 'my_ajax', admin_url . 'js/ajax.js','jquery','1.0.0' ); wp_localize_script( 'my_ajax', 'myajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); ajaxコードは次のとおりです。jquery.ajax({url: myajax.ajaxurl, type: "post",data: {action: 'myaction',postid : myajax.postid}, success: function(response) { alert('got this from the server: ' + response); }}); そしてajaxが呼び出すべきphp関数は次のとおりです。function ajax_function() { ...do something... } add_action('wp_ajax_myaction', 'ajax_function'); add_action('wp_ajax_admin_myaction', 'ajax_function'); ajax呼び出しは成功します( "alert"は機能します)が、php関数 "ajax_function"は呼び出されません。いくつかのデバッグをした後、add_action( 'wp_ajax_がグローバルな$ wp_filter配列に新しい要素を設定したとしても、対応するdo_actionがadmin-ajax.php内で実行されると、$ wp_filter配列にはその要素は含まれません.したがって、 "ajax_function"関数は無視されます。なぜ関数が呼び出されないのですか?
回答: コードに従ってください。add_action( 'wp_ajax_add_myfunc', 'prefix_ajax_add_myfunc' ); add_action( 'wp_ajax_nopriv_add_myfunc', 'prefix_ajax_add_myfunc' ); function prefix_ajax_add_myfunc() { // handle request then generate response using wp_ajax_response } そしてあなたのajax呼び出しでこれを行います:jquery.post( ajaxurl, { 'action': 'add_myfunc', 'data': 'foobarid' }, function(response){ alert('the server responded: ' + response); } ); ajax呼び出しではprefix_ajax_なしで関数を呼び出します。それが残っているだけで呼び出します。その場合はadd_myfuncです。応答がすべてうまくいけばdoneを送ります。そうでなければ、0または-1になります。それが役立つことを願っています。ありがとうございました。