Posted at

dashboardからajaxで何かを更新する

More than 5 years have passed since last update.

管理画面のダッシュボードからちょっとした情報を更新するのにajaxでやりたいときは、独自phpを用意してもできるけど、wordpressの流儀に則ってやっておこう。

まず、ajaxでポストされた時に実行するコールバックを定義する。

add_action( "wp_ajax_アクション名", "my_action_callback" );

function my_action_callback () {
/** アクションの中身 */
}

次に、実際にpost処理を行うjsを書く。この時、ポストしたいパラメータに加えて、"action=上で指定したアクション名"も送信する。アクション名が"update_hoge"だとして、msgで文字列をもらうようなアクションだとすると、jQueryを使うとこんな感じになる。

var data = { 

action: "update_hoge", //wordpressに実行するアクションを指示するため
msg: "hello" //実際に送りたい内容
};

jQuery( ajaxurl, data, function( response ) {
/** 完了時にコールバック */
} );

ajaxurlは、ajax-admin.phpへのurlで、wordpressのjsの方で定義されている値なので、特に宣言もなく利用できる。これを実行すると、wp_ajax_アクション名に指定したコールバックが呼ばれ、その中では$_POST変数からPOSTの内容が扱える。

あとは、wp_add_dashboard_widgetを使って投稿用のフォームウィジェットをダッシュボードに追加して、post用のjsを、admin_footerアクションで出力するなどすれば良い。