WordPressでapply_filters(…)は実際に何をしますか?


123

WordPressの一部の機能を理解しようとしていますが、apply_filters(...)が実際に行うことを理解できません。

誰かがいくつかの例を挙げてこれを片付けることができますか?



ノートapply_filters()、それは両方のフィルタ適用される機能のための非常に誤解を招く名称であるターゲット機能に引っ掛けアクションを
cameronjonesweb

@NabilKadimi、素晴らしい提案、dev.themeblvd.com/tutorial/filters/#highlighter_604585、ただしこの関数が引数を受け入れない場合(リンクをクリックして、私が話している関数を確認してください)、$ output変数はどのように変更されますか、彼が次のコードセクションで説明するように?
Ramesh Pareek 2017

@RameshPareekリンクが期待どおりに動作しないようです。Githubgistを使用してください。
Nabil Kadimi 2017

ごめんなさい!そのページの「例1:基本」まで下にスクロールしてください。
Ramesh Pareek 2017

回答:


104

apply_filters($tag, $value)add_filter指定されたフィルター「タグ」に「フック」された各関数に「値」引数を渡します(を使用)。各関数は値に対して何らかの処理を実行し、シーケンス内の次の関数に渡される変更された値を返します。

たとえば、デフォルトでは(WordPress 2.9)、the_contentフィルターは次の一連の関数を介して値を渡します。

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

また、値を消去しているように見える場合は、値を使用していないものをエコーすることも忘れないでくださいapply_filters($value)...
MrMesees

32

遅い答え

簡単な説明

apply_filters()global $wp_filters配列と相互作用します。基本的には、現在のフィルター(またはフック)にアクション(/ callback関数)がアタッチされているかどうかを確認し、それを呼び出します。

長い説明

コールバック/アクションをフィルターまたはフックにアタッチする場合は、コールバック名をグローバルフィルター配列に追加するだけです。その後、コード(テンプレート、コア、プラグインファイルなど)で呼び出しが発生しdo_action()たり、apply_filters()発生したりすると、WordPressが配列を検索してコールバックを呼び出します。フックよりもフィルターの方が特別なのは、コールバックを起動するだけでなく、(さらに処理するために)値を返すことです。つまり、フックはデータを挿入することであり、フィルタはデータを変更することです。


19

最も人気のある回答と追加のリソースを考慮して、私がここで収集しているものは次のとおりです。

  • $ tagはフックの名前の同義語のようです。(それは私には特に直感的ではありません。)
  • the_contentは、「フィルター」タイプのフックの例です。
  • the_contentフックは複数のフィルターで構成されています。
  • フィルターはデータを変更します。基本的にデータベースをフィルタリングし、ユーザーが表示する前にデータを変更します。
  • たとえば、apply_filters()の一般的な使用法は、the_contentフィルターを$ contentに適用することです。この場合、ダブルリターンは<p>タグに変換され、スマイルフェイスはアイコンに変換されます。
  • 「the_content」はフックであり、「the_content()」は関数です。

1

最も基本的な用語では、apply_filtersはフィルターフックを初期化するために使用されます... add_filterは、すでに作成されているフックに新しい関数を割り当てます。


3
申し訳ありませんが、これは間違った方法です。apply_filters()はすでに初期化されているフィルターフックを呼び出し、add_filter()はフィルターフックを作成する呼び出しです。あなたが実際にこれを意味していたことは知っていますが、あなたは間違った方法で機能を持っています!
ブライアンC

apply_filters($ tag、$ value); コード内に場所を作成し、そこに渡した$ valueをフックしてadd_filter()を使用して変更できるようにします。
Styledev 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.