[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します。

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

結果画面

フィルターフック

 

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

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

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

リンク

[WordPress]プラグインの作り方[01] Hello World


いろいろな方が公開されているプラグインを使っていると、自分でも作りたくなってきます。

また、プラグインをカスタマイズしようとする時にも最低限の知識がないとソースを理解するのが苦しいので、ちょっと勉強がてらプラグインの作成方法をブログに書いてみることにします。

準備

  1. 開発用エディタ
    簡単なプラグインの作成ならテキストエディタで十分です。
  2. 開発用フォルダ
    当初、WordPressのwp-content/pulginsフォルダとは別に用意しましたが、動作確認する時にコピーするのが面倒なので直接wp-content/pulginsフォルダ内に置きました。
  3. 空のphpファイル
    ファイル名はhello-world.phpとしました。

仕様

  • ブログの先頭に「Hello World」と表示する

コーディング

ソースコード全体

hello-world.php
<?php
/*
Plugin Name: Hello World
Plugin URI: https://it-life.kakinota.net/(plugin-page)
Description: Hello Worldと表示するプラグイン
Version: 1.0
Author: kakinota
Author URI: https://it-life.kakinota.net/
License: GPL2
*/


function helloworld(){
	print('Hello World');
}

?>

ソースコードの説明

ファイルのヘッダー部分にプラグインに関する情報(標準プラグイン情報)を記述し、その後にテンプレートタグ関数を記述しています。

標準プラグイン情報の記述

WordPressに作成したプラグインを認識させるためにはphpファイルのヘッダーに標準プラグイン情報を以下のような書式で記述する必要があります。

<?php
/*
Plugin Name: (プラグインの名前)
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/
?>

これによりプラグイン管理画面に表示させたり、プラグインを有効化できるようになります。必須なのはPlugin
Nameだけなので、すべて記述する必要はありません。詳しくは以下のページをご覧下さい。

プラグインの作成 – WordPress Codex 日本語版

テンプレートタグ関数の作成

テーマに直接タグを埋め込むことにより、その位置に’Hello World'と出力するhelloworld()という関数を作成しました。普通に関数を定義してprint()するだけの単純なものなのであっという間に完成しました。

使い方

テンプレートタグの埋め込み

使用中のテーマにあるheader.phpへ以下のコードを<body>タグの下に埋め込みます。先ほど作成した関数を普通に呼び出すだけです。

<?php helloworld(); ?>

プラグインの有効化

すでにwp-content/pulginsフォルダ内にファイルがあるので、WP管理画面から[プラグイン]へアクセスするとプラグイン一覧の中に作成したものが登録されていることが確認できます。

プラグイン

自分の作成したプラグインが登録されるとちょっと嬉しい(^o^)

結果画面

プラグイン

有効化後ブログにアクセスすると上の図のように「Hello World」と表示されます。

今回はテンプレートタグ関数を使ったやり方を勉強しましたが、次回はフックを使ってHello Worldを作ってみたいと思います。

[WordPress]パンくずリストを表示するプラグイン | Breadcumbs Plus


ダウンロード

インストール

  1. ダウンロードしたファイルを解凍してWordPressのwp-content/pluginsフォルダにコピーする
  2. プラグインを有効化する

使い方

以下のコードをパンくずリストを表示したい箇所に挿入するだけです。

<?php if ( function_exists( 'breadcrumbs_plus' ) ) breadcrumbs_plus( array( 'singular_post_taxonomy' => 'category' ) ); ?>

カスタマイズ

デフォルトの設定の場合、パンくずリストの前に「You are here:」という余計な文字列が付加されてしまいます。

これを消すには、breadcrumbs-plus.phpの以下の部分にある'title'を空にしてしまえばOKです。

/* Set up the default arguments for the breadcrumb. */
$defaults = array(
	'prefix' => '<p>',
	'suffix' => '</p>',
	'title' => __( 'You are here:', 'breadcrumbs-plus' ), 
	'home' => __( 'Home', 'breadcrumbs-plus' ),
	'separator' => '&raquo;',
	'front_page' => false,
	'show_blog' => false,
	'singular_post_taxonomy' => 'category',
	'echo' => true
);

同様に「Home」という文字列を「ホーム」や「トップ」に変更したい場合は’home’という部分を変更すればできます。

結果画面

[画像]wordpress_breadcrumbs-plus_01

総評

非常にシンプルで最低限の機能を備えており設置もストレスなくできました。