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

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

  関連記事

【Stinger5】Stinger5でGoogle Adsenseの広告を貼る方法
【Stinger5】Stinger5でGoogle Adsenseの広告を貼る方法

WordPressでブログ運営している人で、テーマにStinger5を使っている …

【Quick Adsense】Quick Adsenseの広告の掲載位置を設定する
【Quick Adsense】Quick Adsenseの広告の掲載位置を設定する

Googleアドセンスや忍者アドマックスの広告などの掲載の為、Wordpress …

【Quick Adsense】最後の段落の前に広告を自動挿入する!Quick Adsenseの設定
【Quick Adsense】最後の段落の前に広告を自動挿入する!Quick Adsenseの設定

WordPressでブログを運営している人の中には「最後の段落の前に広告を自動挿 …

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

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

【W3 Total Cache】ブラウザキャッシュのメディアファイルとその他のファイルの設定
【W3 Total Cache】ブラウザキャッシュのメディアファイルとその他のファイルの設定

W3 Total Cacheのブラウザキャッシュでは、画像や動画、音声ファイルと …

【Wordpressプラグイン自作】管理画面の任意画面のヘッダー作成時に処理を実行する方法
【WordPressプラグイン自作】管理画面の任意画面のヘッダー作成時に処理を実行する方法

WordPressのプラグインを自作していて、Wordpressの管理画面の任意 …

【Stinger5】Stinger5のカスタマイズ方法のまとめ特集
【Stinger5】Stinger5のカスタマイズ方法のまとめ特集

WordPressでブログを運営し、Stinger5を使っていると自分好みにカス …

【Wordpress】プラグインを整理しなければならない理由 ユーザと自分の為に
【WordPress】プラグインを整理しなければならない理由 ユーザと自分の為に

WordPressのプラグインはとても便利ですよね。 このブログでもWordpr …

【Wordpress】Google Adsenseの広告を簡単掲載するプラグイン Quick Adsense
【WordPress】Google Adsenseの広告を簡単掲載するプラグイン Quick Adsense

WordPressでブログを運営し、Google Adsenseを使ってブログを …

【Wordpress開発環境】開発環境構築で必要なXamppの設定
【WordPress開発環境】開発環境構築で必要なXamppの設定

WordPressでテーマやプラグインの開発を進めるには、自分のパソコン上で開発 …