どうしたらいいの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でブログ運営する上で参考にしたい考察 
【WordPress】WordPressでブログ運営する上で参考にしたい考察 

WordPressはブログを運営する上でメジャーなCMSです。 Wordpres …

【W3 Total Cache】ページキャッシュ(Page Cache)を設定しよう!
【W3 Total Cache】ページキャッシュ(Page Cache)を設定しよう!

WordPressのページキャッシュにW3 Total Cacheを使っている人 …

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

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

【Wordpress】Head Cleanerの設定! Wordpressのブログを高速化!
【WordPress】Head Cleanerの設定! WordPressのブログを高速化!

WordPressでブログ運営を行っていると、ブログのパフォーマンスを気にしてい …

【Wordpressプラグイン自作】プラグイン開発で良く使う!よく見る!PHPの関数
【WordPressプラグイン自作】プラグイン開発で良く使う!よく見る!PHPの関数

WordPressプラグインを自作したり、既存のプラグインを編集したりする上で、 …

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

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

【Wordpress】プラグインを使う上で絶対参考にしたい考察
【WordPress】プラグインを使う上で絶対参考にしたい考察

WordPressでブログを運営し、さまざまなプラグインを利用しオリジナリティあ …

【Wordpress】データ通信を削減してブログを高速化! Head Cleaner
【WordPress】データ通信を削減してブログを高速化! Head Cleaner

WordPressでブログを運営している人で、「もっとブログのパフォーマンスを上 …

【Crayon Syntax Highlighter】ショートコードで表示するとソースコードにCSSが反映されない原因
【Crayon Syntax Highlighter】ショートコードで表示するとソースコードにCSSが反映されない原因

WordPress上のブログでソースコードを紹介するのに、プラグインとしてCra …

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

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