どうしたらいいの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

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

  関連記事

【Wordpressプラグイン自作】Wordpressにプラグインの関数処理を実行させる方法(add_filter)
【WordPressプラグイン自作】WordPressにプラグインの関数処理を実行させる方法(add_filter)

WordPressのプラグインを自作したり、ダウンロード・インストールしたプラグ …

【Stinger5】プラグインを利用してGoogle Adsenseを掲載する方法
【Stinger5】プラグインを利用してGoogle Adsenseを掲載する方法

WordPressでブログを運営している人で、テーマとしてStinger5を導入 …

【Wordpressプラグイン自作】フックに登録する関数を他プラグインの関数と衝突させない方法
【WordPressプラグイン自作】フックに登録する関数を他プラグインの関数と衝突させない方法

WordPressのプラグインを自作する上で気を付けなければいけないのが自作した …

【Crayon Syntax Highlighter】ショートコードでテンプレート化したソースコードにCSSを適用する方法
【Crayon Syntax Highlighter】ショートコードでテンプレート化したソースコードにCSSを適用する方法

WordPressで作成したブログでソースコードを紹介するとき、綺麗な表示にして …

【Quick Adsense】記事下に自動で広告を挿入するQuick Adsenseの設定
【Quick Adsense】記事下に自動で広告を挿入するQuick Adsenseの設定

WordPressでブログを運営している人で、Quick Adsenseを使って …

【Wordpress】オススメのプラグイン激まとめ タメになるプラグイン特集!
【WordPress】オススメのプラグイン激まとめ タメになるプラグイン特集!

WordPressでブログを運営していると色々なプラグインを利用していると思いま …

【Autoptimize】HTMLを縮小化するAutoptimizeの基本設定 初心者でも簡単!
【Autoptimize】HTMLを縮小化するAutoptimizeの基本設定 初心者でも簡単!

AutoptimizeはWordpressのプラグインで、HTMLを縮小化する機 …

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

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

【Wordpress開発環境】XamppにWordpressを新規インストールする方法
【WordPress開発環境】XamppにWordPressを新規インストールする方法

WordPress開発環境を作成する上では、Xamppを利用してWordpres …

【TinyMCE Templates】ショートコードで定型文を一括変更!
【TinyMCE Templates】ショートコードで定型文を一括変更!

WordPressでブログを運営している人で「TinyMCE Templates …