1. TOPTOP
  2. Webサービス

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

|

ecoteki-image

WordPressのシステムやプラグインについて学習していると、必ず出くわすのがフックの概念です。フックとは、CMSとしてのWordPressが動作するときの途中で割り込みを行い(フック)、カスタマイズな処理を行う概念のことです。

と言っても自分がよく分かっていないので、自分を含めた他の方にも分かってもらえるように記事を書いてみます。前回の記事自作プラグイン(新しいタブで開く)の紹介をして、その概要をざっくりと説明しました。今回はその続きで処理の内容について詳しく解説していきます。

add_filter関数の処理について

add_filter( 'the_content', function($content){
  return str_replace('WordPress', '<a href="https://2017.kyoto.wordcamp.org/"><span class="wckyoto2017">WordCamp Kyoto 2017&</span>', $content);
});

add_filter関数は指定したフィルターフックに関数を登録します。つまりthe_content(新しいタブで開く)というフックがかかったとき、第二引数となっている関数の処理が実行されます。

その処理はPHPの組み込み関数であるstr_replaceを使って、記事内に”WordPress”という文字列が出力されるときは、必ずリンクがかかった”WordCamp Kyoto 2017(新しいタブで開く)“という文字列に置換されます。add_filter関数がフックすることによって、値が書き換わったとも言えます。

add_action関数の処理について

add_action( 'wp_enqueue_scripts', function() {
  if ( is_admin() ) {
    return;
  }
  $cssurl = plugins_url('style.css', __FILE__);
  wp_enqueue_style( 'wckyoto2017', $cssurl);
});

add_action関数は特定のアクションにフックします。この場合、wp_enqueue_scripts(新しいタブで開く) というアクションに、引数のない関数がフックします。その関数は第二引数で示されています。

フックする関数 2~4行目

2行目から4行目まではwp-login.phpにアクセスしようとするときは、add_action関数は実行されないということを意味します。 管理画面であれば、何もしないで戻るという意味です。PHP公式ドキュメントのreturn(新しいタブで開く)に関する説明が参考になります。それ以外のファイルにアクセスしようとしたときのみ、5~6行目の処理が実行されます。

フックする関数 5~6行目

5行目の$css_urlには、プラグインが入ったディレクトリの直下にあるCSSファイルの絶対パスが代入されています。第二引数にPHPのマジック定数(新しいタブで開く)である、__FILE__を使うことによって、右辺を簡潔に記述することができます。

一方6行目では、フックしたときにどのような内容が追加実行されるかを記述します。この場合は、wckyoto2017.phpというファイルを読み込んだときに、$cssurl(style.css)が適用されるという内容です。 第一引数はハンドル名を表します(ハンドル名は任意の文字列)。第二引数はスタイルシートの URLです。wp_enqueue_styleはWordPressが生成したページにCSS スタイルファイルを安全に追加することになります。

プラグインを有効化

以上の内容をもってプラグインを有効化して記事の内容(the_content)を見ると、デフォルトでは”WordPress”と出力されるはずの文字列が、プラグインを有効化することによって”WordCamp Kyoto 2017″に変わっていることが分かります。 に変わり、プラグイン独自のスタイルシートが適用されていることが分かります。

追記

文章中に打ち消し線を追加し、その後に太字で修正を加えています。SNSに記事のURLを投稿したところ、お友だちの方が指摘くださいました。ありがとうございます!

【参考サイト】