管理画面のダッシュボードからちょっとした情報を更新するのに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
アクションで出力するなどすれば良い。