私は最近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');
それでは機能がために夢中init
にフックmy-page-test-functions.php
トリガーされませんので、私が思う、ファイルinit
の前に来ますparse_query
。
これを整理するベストプラクティスはありますか?またはadmin-ajax.php
、wp_enqeue_scripts
アクションフックを使用しているときに、どうすれば悪いリクエストを修正できますか?