どうしたらいいのNAVI

どうしたらいいの?にお答えするサイト

【WordPressプラグイン自作】フィルターフックと、フックで追加した関数の値のやり取り

      2015/11/07


WordPressでフィルターフックを使っていると、フィルターフックと、フックで追加した関数の間でどうやって値をやり取りしているの?という事が疑問に起こると思います。

 
フィルターフックはWordpressがすでに定義しているフックの他、自作でフィルターフックを追加する事が出来る為、自作したフィルターフックと、フックさせたそれぞれの関数でどうやって値をやり取りしているの?という事を知らないとプラグイン開発の上で躓く箇所になります。

 
Wordpressのフィルターフックとフックで追加した関数の値のやり取りについて簡単でわかりやすく詳しく紹介しているのでチェックしていってくださいね。

 

 
【Wordpressプラグイン自作】フィルターフックと、フックで追加した関数の値のやり取り
 

 

フィルターフックと、フックで追加した関数の値のやり取りとは?

WordPressでフィルターフックとフックで追加した関数の値のやり取りというのは、既にWordpressがAPIとして提供しているフィルターフックの他、自作したフィルターフックと、そのフィルターフックに対して追加した関数との値のやり取りがどのように行われているのかという事を意味しています。

 
フィルターフックはデータベースに追加する前やブラウザのスクリーンに送り出す前にさまざまなタイプのテキストを変更するために WordPress が起動させるフックであり、主に文字列に対する処理を各関数で行う必要があります。

 
その文字列を処理する上で、必須となるのが「フィルターと各関数がどのように文字列をやり取りしているのか?」という事です。
もっと具体的に言うと、フィルターフックと各関数同士は、どのように引数を渡して、戻り値を受け取り、次の関数へ受け流しフィルターという機能を実現しているのか?という事を意味しています。

 
この原理というか、原則を掴んでいないとフィルターフックで追加したい関数の実装で引数をどう定義し、戻り値に何を返せばよいのか?という事に加え、関数の実行優先順位などを考える事が出来なくなるので、フィルターフックとフックで追加した関数の値のやり取りについてはしっかりと理解しておきたい所ですね。

 

 

 

 

フィルターフックはテキストの生データを作成する、フックで追加した関数は生データを加工する物という事を覚えておこう

フィルターフックと、フックで追加した関数の値のやり取りを知る上で、おさえておかなければならない大前提があります。

 
それが、フィルターフックはテキストの生データを作成する物であり、フックで追加した関数はフィルターフックによって作成された生データを、関数内の処理によって加工する物であるという事です。

 
フィルターフックは文字列を生み出す源流であり、フィルターフックに追加された関数は優先順位などをWordpressに考慮されフィルターフックそのものから渡された文字列を次々と加工する物だという事です。

 
ここをおさえると、フィルターフックとして追加したい関数は「文字列」を引数として受け取り、関数内で処理した「文字列」を戻り値として持たなければならない事が分かりますね。
また、フィルターフックを自作したい場合も、フィルターフック登録時に、加工の大元となる文字列を登録し、フックされた関数に処理できる形にしなければならない事がわかるかと思います。

 
この流れは基本的な事ではありますが、しっかりとイメージとして湧かないと、プラグイン開発でより高度なプラグインを作る上で必ずと言っていいほど躓く事になりますので、しっかりと流れとして把握できるようになりましょう。

 

 

 

 

フィルターフックと、フックで追加した関数の値のやり取り

さて、次に本題のフィルターフックと、フックで追加した関数の値のやり取りについて述べていきます。
フィルターフックと追加した関数の値のやり取りはすべて、次の流れで行われます。

  • フィルターフック登録時の「第二引数に指定した文字列」がフィルターフックの出力結果(return)になる
  • フックされた関数の「第一引数」の変数に対し、フィルターフックが出力した文字列が格納される
  • 関数内で出力(return)した内容が、次にフックされている関数の第一引数に格納される

 
ここでポイントとなるのが、フィルターフック登録時の第二引数に指定した文字列が、フックされている各関数の第一引数に渡され、さらに関数が戻り値として指定した文字列が、更に次の関数の第一引数に格納されるという点でしょう。

 
フィルターフックを登録する時、フィルターフックに関数を追加する時は「フィルターフック登録時の第二引数」と「フックに追加した関数の第一引数」と「フックした関数でreturnする値」に着目するとフィルターフックとフックされた関数同士のやり取りがわかり安いでしょう。

 
他にもフィルターフックからは追加変数を各関数に渡す事が出来ますが、ここでは話がごちゃごちゃになるため、いったん割愛させていただきます。

 

 

 

 

WordPressのフィルターフックとフックで追加した関数の値のやり取り あとがき

WordPressのフィルターフックとフックで追加した関数の値のやり取りについて解説しました。

実を言うと私自身、Wordpressのフィルターフックとフックで追加した関数との引数、戻り値のやり取りがどうやって行われているのか?という事がイメージできず、プラグイン開発に躓いてしまった事があります。

また、プラグインをカスタマイズする上で、独自のフィルターフックを追加しているようなプラグインも存在し、フィルターフックの動作や、フィルターフックに対して追加されている関数について読み解く事が出来ず、カスタマイズを断念した経験もあります。

実際の所、動作原理を知ってしまえば、なんてことない「フィルターはフィルターらしい引数と戻り値」をもっているだけなので、この原理を理解した時は「なんだ、そんなことか」と困っていた自分自身が恥ずかしいくらいになってしまいました。

もし、この記事の検索需要が高いようであれば、更に具体例なども含めて紹介していきたいと思います。

WordPressのフィルターフックとフックで追加した関数の値のやり取りについて学べたという事で!より高度な方法でプラグインを開発できるようになりましたね!
より快適なWordpressライフを送る上で、ぜひこの知識を活用していってくださいね。
 

 

 

 

WordPressのフィルターフックとフックで追加した関数の値のやり取り まとめ

WordPressでフィルターフックとフックで追加した関数の値のやり取りというのは、既にWordpressがAPIとして提供しているフィルターフックの他、自作したフィルターフックと、そのフィルターフックに対して追加した関数との値のやり取りがどのように行われているのかという事を意味しています。

 
フィルターフックはデータベースに追加する前やブラウザのスクリーンに送り出す前にさまざまなタイプのテキストを変更するために WordPress が起動させるフックであり、主に文字列に対する処理を各関数で行う必要があります。

 
その文字列を処理する上で、必須となるのが「フィルターと各関数がどのように文字列をやり取りしているのか?」という事です。
もっと具体的に言うと、フィルターフックと各関数同士は、どのように引数を渡して、戻り値を受け取り、次の関数へ受け流しフィルターという機能を実現しているのか?という事を意味しています。

 
フィルターフックと、フックで追加した関数の値のやり取りを知る上で、おさえておかなければならない大前提があります。

 
それが、フィルターフックはテキストの生データを作成する物であり、フックで追加した関数はフィルターフックによって作成された生データを、関数内の処理によって加工する物であるという事です。

 
フィルターフックは文字列を生み出す源流であり、フィルターフックに追加された関数は優先順位などをWordpressに考慮されフィルターフックそのものから渡された文字列を次々と加工する物だという事です。

 
さて、次に本題のフィルターフックと、フックで追加した関数の値のやり取りについて述べていきます。
フィルターフックと追加した関数の値のやり取りはすべて、次の流れで行われます。

  • フィルターフック登録時の「第二引数に指定した文字列」がフィルターフックの出力結果(return)になる
  • フックされた関数の「第一引数」の変数に対し、フィルターフックが出力した文字列が格納される
  • 関数内で出力(return)した内容が、次にフックされている関数の第一引数に格納される

 
ここでポイントとなるのが、フィルターフック登録時の第二引数に指定した文字列が、フックされている各関数の第一引数に渡され、さらに関数が戻り値として指定した文字列が、更に次の関数の第一引数に格納されるという点でしょう。

 
フィルターフックを登録する時、フィルターフックに関数を追加する時は「フィルターフック登録時の第二引数」と「フックに追加した関数の第一引数」と「フックした関数でreturnする値」に着目するとフィルターフックとフックされた関数同士のやり取りがわかり安いでしょう。

 
他にもフィルターフックからは追加変数を各関数に渡す事が出来ますが、ここでは話がごちゃごちゃになるため、いったん割愛させていただきます。

 

 
最後までお読みいただきありがとうございました。

スポンサーリンク





 - Wordpress , , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

【W3 Total Cache】全体設定(General Settings)を設定しよう!
【W3 Total Cache】全体設定(General Settings)を設定しよう!

WordPressを運営していて、W3 Total Cacheを利用している人は …

【Autoptimize】JavaScriptを縮小化するAutoptimizeの基本設定 簡単設定!
【Autoptimize】JavaScriptを縮小化するAutoptimizeの基本設定 簡単設定!

Autoptimizeには基本設定と高度な設定があり、基本設定については初心者で …

Crayon Syntax Highlighterとは?
【WordPress】ソースコードを綺麗に紹介したい! Crayon Syntax Highlighter

ブログ運営をしていてプログラムのソースコードを利用したいという人は、「Crayo …

【Quick Adsense】記事中に自動で広告を掲載したい!Quick Adsenseを設定する
【Quick Adsense】記事中に自動で広告を掲載したい!Quick Adsenseの設定

広告でブログの収益化をしている人は「記事中に自動で広告を貼りたい」と考える人も居 …

【Wordpressプラグイン自作】特定のイベント時に処理を実行させるアクションフック(add_action)
【WordPressプラグイン自作】特定のイベント時に処理を実行させるアクションフック(add_action)

WordPressのプラグインを自作するには自分のつくったプログラムがいつ実行さ …

【Quick Adsense】サイドバーに広告を追加する設定について
【Quick Adsense】サイドバーに広告を追加する設定について

WordPressでブログを運営している人で、広告を掲載している人は「サイドバー …

【W3 Total Cache】レスポンシブテーマでPCとスマホの広告位置が一緒に!? 原因と対処方法
【W3 Total Cache】レスポンシブテーマでPCとスマホの広告位置が一緒に!? 原因と対処方法

W3 Total Cacheを入れてWordpressのブログを高速表示させよう …

【TinyMCE Templates】TinyMCE Templatesで出来る便利なカスタマイズ
【TinyMCE Templates】TinyMCE Templatesで出来る便利なカスタマイズ

ブログの定型文や決まり文句、JavaScript等々、様々なものをテンプレートと …

【Wordpress】データベースをバックアップしよう! 目的や方法について
【WordPress】データベースをバックアップしよう! 目的や方法について

WordPressでブログを運営する上ではデータの保全性もとても重要ですよね。 …

【Wordpressプラグイン自作】自作プラグインをWordpressに登録し認識させる方法
【WordPressプラグイン自作】WordPressに自作プラグインを登録し認識させる方法

WordPressを使っていて、自作プラグインを作成したいと考えている人も多い事 …