[WordPress]プラグインの作り方[02] フィルターフックとアクションフック


前回はテンプレートタグ関数埋め込み型のプラグインを作成しました。今回はフックを使ったプラグインを作ってみたいと思います。

フックとは?

フックは、特定のタイミングでプラグインを作動させるための仕組みです。

前回はWPテンプレートのheader.phpの<body>タグの下に<?php helloworld(); ?>というように直接埋め込んだのでブラウザでその部分がロードされるときにhelloworld()が呼び出されました。

フックを利用する場合は、タグを埋め込んだりしなくても予めプラグイン内にフックを登録しておくことにより、そのタイミングでプラグインを作動させることができます。例えば、タイトルに何か加工したい時は「the_title」、フッターが読み込まれる時に何かしたい時は「wp_footer」というフックに自己の関数を登録しておくと、そのタイミングで作動させることができます。

フックの種類

フックには次の2種類があります。

フィルターフック 特定のタイミングでテキストを改造するためのフックです。ブラウザに表示する前やデータベースを更新する前にテキストを改造したい場合などに使えます。
アクションフック 特定のタイミングで処理を実行するためのフックです。テーマの変更後、投稿の公開後などにメールを送信したい場合などに使えます。

コーディング

フィルターフックの使用例

フィルターフックを使ってプラグインを作ってみます。

ソースコード全体

hooksample.php
<?php
/*
Plugin Name: hook-sample
Plugin URI: https://it-life.kakinota.net/(plugin-page)
Description: フックサンプルプラグイン
Version: 1.0
Author: kakinota
Author URI: https://it-life.kakinota.net/
License: GPL2
*/

function hooksample($title){
	$title = '■'.$title;
	return $title;
}

add_filter('the_title','hooksample');

?>

ソースコードの説明

add_filter()は、作成した関数をフックと関連付けるものです。ここでは、hooksample()を作成し、the_titleというフィルターフックに関連付けています。これにより、the_titleにフックされてhooksample()が実行されます。

その際に記事のタイトルが引数として渡されるので、これに「■」を付加してreturnします。

非常に単純ですが応用範囲は広いですね。

結果画面

フィルターフック

 

プラグイン有効化後ブログにアクセスすると上の図のように記事タイトルの先頭に「■」が表示されます。

アクションフックの使用例

ネットにいろいろサンプルがあり、基本的には考え方は同じなので割愛します。以下のリンクなどをご参考ください。

リンク