1. TOP
  2. Webサービス
  3. 自作プラグインでadd_filterとadd_actionについて解説してみる(その1)

自作プラグインでadd_filterとadd_actionについて解説してみる(その1)

|
ecoteki-image

WordPressのシステムやプラグインについて学習していると、必ず出くわすのがフックの概念です。フックとは、CMSとしてのWordPressが動作するときの途中で割り込みを行い(フック)、カスタマイズな処理を行う概念のことです。と言っても自分がよく分かっていないの、自分を含めた他の方にも分かってもらえるように記事を書いてみます。

2種類のフック

WordPressにはこの割り込みを行うための関数として、add_actionadd_filterという2種類のフック関数があります。エンジニアのためのWordPress開発入門という本のP124に分かりやすい説明がされていますので、そのまま引用させていただきます。

このフックにはアクションとフィルターの2つの種類があります。大まかに言うと、アクションは処理を追加し、フィルターはデータや処理を変更するイメージです。

非常に分かりやすい説明です。問題は自分や初心者の方が両者を区別して使うことができるかどうかです。そこで同書に例として挙げられているプラグインを参考にして、記事中に”WordPres”の文字列が出力されたとき、”WordCamp Kyoto 2017” と言うリンク付きの文字列に置換するプラグインを作成しました。そのコードはGittHubにまとめています。

wckyoto2017.phpの概要

まずwckyoto2017.phpの概要をざっくりと見てみましょう。個人的にはまずこのような確認の仕方をします。


<?php
/*
Plugin Name: WordCamp Kyoto 2017
Plugin URI: http://e-yota.com/wckyoto2017
Description: WordPressがWordCamp Kyoto 2017に変わります。
Version: 1.0
Author URI: http://e-yota.com
License: GPLv2
*/

add_filter( 'the_content', function($content){
 
});

add_action( 'wp_enqueue_scripts', function() {
 
});

各関数にはフックした時のいろいろと実際の処理動作が記述されています。ですがそういう細かいところは、とりあえずスルーして全体を眺めます。この場合、ざっくりと3つのブロックに分けて考えることができます。

情報ヘッダー

最初にみるべきところは、コメントアウトで囲まれたプラグイン情報ヘッダーです。この記述をすると管理画面の「インストール済みプラグイン」の箇所にプラグイン名をはじめとした情報が記述されます。ちなみに記述をしただけでは停止状態になります。プラグインが完成して試してみたかったら「有効化」のボタンを押しましょう。

add_filter関数

次に見るべきはadd_filterです。この関数は指定したフィルターフックに関数を登録します。この場合、the_content というフックに、$contentを引数とした関数を登録していることになります。

add_action関数

3番目に見るべきadd_actionです。この関数は特定のアクションに割り込みをします。この場合、wp_enqueue_scripts というアクションに、引数のない関数が割り込みを行います。もう少し具体的にいうと記事を読み込むタイミングで適切なファイルを追加で読み込むと言ったところでしょうか。ちなみにアクションとは、WordPress コアにより特定の場所で実行される PHP 関数のことを指します。

スカスカなwckyoto2017.phpの意味

つまりこの関数の処理が記述されていないPHPファイルは、以下のような意味合いになります。細かい処理は次回の記事で説明します。

  • プラグインの宣言
  • add_filterで記事データの変更
  • add_actionで記事データに関する処理の追加

その2へ続く)

【参考サイト】