WordPressで構築されたサイト内でAjax通信を行う方法
2025/08/01
WordPressで構築されたサイト内でボタンクリック時等にAjax通信を行いたいというケースがあった。適当なディレクトリに処理用のファイルを設置し、そちらに対してリクエストしても正常に動作せず、何故なのか調べたところWordPress用のお作法みたいなのがあるらしい。以下に対応方法をメモ。
目次
対応方法
Ajax送信側
Ajax送信したいページ(ファイル)に以下を記述する。
admin_url()はWordPress用関数になるが、これを使いたくない(JSファイルで完結させたいような)場合は「/wordpress/wp-admin/admin-ajax.php」のように適宜変更すること。
$(document).on(`click`, `.button`, function(){
$.ajax({
url: `<?php echo admin_url("admin-ajax.php")?>`, //admin-ajax.phpに対して送信(ここは固定)
type: 'POST',
data: {}, //何らかのデータを送信する場合はこちらで指定
}).done(function( result ){
}).fail(function() {
}).always(function() {
});
return false;
});
受信側
functions.php等に以下を記述する。wp_ajax_{$action}はログイン済みユーザー、wp_ajax_nopriv_{$action}は未ログインのユーザーによるAjaxアクションを実行するためのフックになる。
function ajax_function(){
//何らかの処理
//値を返したい場合はechoで出力
echo $result;
//終了させる
wp_die();
}
add_action( 'wp_ajax_ajax_function', 'ajax_function' );
add_action( 'wp_ajax_nopriv_ajax_function', 'ajax_function' );
リファレンス
admin_url
https://developer.wordpress.org/reference/functions/admin_url/
do_action( "wp_ajax_{$action}" )
https://developer.wordpress.org/reference/hooks/wp_ajax_action/
do_action( "wp_ajax_nopriv_{$action}" )
https://developer.wordpress.org/reference/hooks/wp_ajax_nopriv_action/
関連記事
-
-
WPのget_the_contentsでpタグが挿入されない場合の対応方法
WordPressのテーマを編集した際に表示が崩れるという症状が発生した。編集内 ...
-
-
Polylangのスイッチャーでクエリ(GETパラメータ)を引き継ぐ方法
WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...
-
-
Polylangのスイッチャーとページャーの組み合わせ方法
WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...
-
-
WordPressで記事毎に設定したバナー広告を表示させる方法
WordPressでGoogleアドセンスのようなクリック広告ではなく、商品を指 ...
-
-
WordPressにてAdvanced Custom Fieldsを用いて連載(シリーズ)記事機能を実装する方法
先日「Series」プラグインで連載(シリーズ)記事機能の実装方法をメモしたが、 ...