質問: 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()と関係があるのではないかと思いますが、よくわかりません。
回答: 完全な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のリンク先です。例です。