wp_enqueue_scriptsアクションフックのみを使用したadmin-ajax.phpでの400の悪いリクエスト
私は最近ajaxに取り組んでいます。ネットで見つけたチュートリアルはすべて非常に似ており、実装が非常に簡単です。しかし、私は常に私のファイルに悪いリクエスト400を受け取りajax-admin.phpます。 長時間にわたる集中的な検索の後、統合の時期が原因であることがわかりました。 initアクションフックを使用してスクリプトとを初期化するとwp_localize_script、すべてが正常に機能します。したがって、コード自体が正しい必要があります。 my-page-test-functions.php function ajax_login_init(){ wp_register_script('ajax-login-script',get_stylesheet_directory_uri().'/js/ajax-login-script.js',array('jquery')); wp_enqueue_script('ajax-login-script'); wp_localize_script('ajax-login-script','ajax_login_object',array('ajaxurl' => admin_url('admin-ajax.php'),'redirecturl' => 'REDIRECT_URL_HERE','loadingmessage' => __('Sending user info, please wait...'))); add_action('wp_ajax_nopriv_ajaxlogin','ajax_login'); } if(!is_user_logged_in()){ add_action('init','ajax_login_init'); } function ajax_login(){ //nonce-field is created on page check_ajax_referer('ajax-login-nonce','security'); //CODE die(); } しかし、たとえばwp_enqeue_scriptsアクションフックを使用すると、常に悪いリクエストが返されます。 if(!is_user_logged_in()){ add_action('wp_enqueue_scripts','ajax_login_init'); } これの問題は次のとおりです。 関数を追加のphpファイルに入れて、特定のページで必要な場合にのみロードしたいです。これには、たとえばが必要is_page()です。しかしis_page()、parse_queryアクションフックにincludeを使用して関数をフックすると、最も早く動作します。 functions.php function sw18_page_specific_functions(){ if(is_page('page-test')){ include_once dirname(__FILE__).'/includes/my-page-test-functions.php'; } } add_action('parse_query','sw18_page_specific_functions'); …