この記事は最後に更新してから1年以上経過しています。

WordPressの鼓動

説明

WordPressでは、Ajaxを利用する方法の1つとして add_action関数を利用することができる。この方法を調べている過程で、'heartbeat'というおもしろそうなAjaxアクションがあったので、紹介しておく。

WordPress標準のAjax利用方法

WordPress標準のAjaxアクションは、add_action関数を利用し、ログイン済みのユーザー向けと未ログインユーザー向けを個別に登録するようになっている。

/* ログイン済みユーザー向け */
add_action( 'wp_ajax_アクション名', '任意の関数名' );

/* 未ログインユーザー向け */
add_action( 'wp_ajax_nopriv_アクション名', '任意の関数名' );

上記のアクションを呼び出すURLは、どちらも「http://ドメイン名/wp-admin/admin-ajax.php?action=アクション名」のようなパターンとなる。

heartbeatアクション

このURLでわかるように、Ajaxアクションのレスポンス処理を行うのはadmin-ajax.phpなので、その中身を見てみると次のような記述が見つかった。

add_action( 'wp_ajax_nopriv_heartbeat', 'wp_ajax_nopriv_heartbeat', 1 );

このAjaxアクションは未ログインユーザー向けで、実際に開発環境にて「http://localhost/wp-admin/admin-ajax.php?action=heartbeat」にアクセスしてみると、次のようなレスポンスがあった。

{"server_time":1380606481}

このようにサーバー時間がJSON形式で返ってくる。サーバーの稼働状況を確認する場合などに便利なのかな

コールバック関数のwp_ajax_nopriv_heartbeat関数は、/wp-admin/includes/ajax-actions.phpに記載されており、コメントには「Heartbeat API (experimental)」と記載されている。「実験中」ということだろうね。

wp_ajax_nopriv_heartbeat関数の中を見てみると、2つのフィルターと次に示す1つのアクションが呼び出されるようになっている。もし独自の機能を追加するなら、このアクションを利用すればいい。

do_action( 'heartbeat_nopriv_tick', $response, $screen_id );

今後が気になる

さて、紹介したheartbeatアクションは3.6で追加されたもので、以前のバージョンでは使用できない。「experimental」ということなので、次のバージョンで変わる可能性はあるのだが、サーバー監視を考えている方には参考になる機能ではないだろうか。


最終更新 : 2013年10月01日 15:22


お勧め

add_shortcode(2018年5月27日 更新)

void add_shortcode( string $tag, mixed $func )
ショートコード(独自タグ)を追加する。ショートコードは、投稿記事内でテキスト内容がない[tag]や、テキストを内包する[tag]テキスト[/tag]の書式で使用できる独自タグのこと。標準の状態では、 the_content関数によって表示する直前のフィルター処理内でパラメータ$funcで指定した関数・メソッドが実行される。

get_user_setting(2022年1月31日 更新)

mixed get_user_setting( string $name [ , string $default = false ] )
ユーザーインターフェイス設定を取得する。

have_posts(2018年5月27日 更新)

bool have_posts( )
次の投稿データが存在するかを調べる。

in_category(2018年5月27日 更新)

bool in_category( mixed $category [ , mixed $post = null ] )
投稿情報が指定したカテゴリーに属しているか調べる。

add_feed(2024年6月24日 更新)

string add_feed( string $feedname, callable $callback )
フィードを追加する。