it-swarm-ja.com

WordPressのAjax - パスの問題

私はWordPressでAjaxを(jQuery経由で)試しています。すべて正常に動作していますが、スクリプトと同じディレクトリにあっても、何らかの理由でPHPハンドラファイルへの完全なURLが必要です。

これがコードです:

$.post('http://full/url/to/file.php', $("#form").serialize(), function(data){
  do stuff
  ...
}); 

なぜそれに "file.php"を入れないのですか?完全なURLが必要なのはなぜですか?もっと重要なのは、エンドユーザーが毎回完全なURLを入力しなくても、どのサイトでも機能するように、何をそこに配置できるかということです。

P.S Ajaxの問題とPHPページへのパスを読んだことがありますが、もう少し混乱したところです。私はWordPressコーデックスのプラグインページのAjaxも読んだことがありますが、そこには関連する例がありません。これはwp_localise_script()と関係があるのではないかと思いますが、よくわかりません。

2
byronyasgur

完全なURLが必要です。なぜなら、たとえそれが比較的バックエンドの正しい場所であっても、あなたのページが最終的に提供されるURLのフロントエンドと同じではないからです。

あなたはwp_localize_scriptで正しい道を進んでいます。あなたはあなたのajaxスクリプトをエンキューしたいですそしてそれからwp_localize_scriptにadmin ajax URLを渡します:

function my_init_method(){
    wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'js/my_ajax_script.js', array( 'jquery' ) );
    wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
add_action('init', 'my_init_method');

これであなたのajaxスクリプトの中であなたはURLのためにMyAjax.ajaxurlを参照することができます。

プラグインとテーマでajaxを適切に使用する方法については、この投稿 を参照してください。これがWP Codexのリンク先です。例です。

1
Milo