web-dev-qa-db-ja.com

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

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

誰かがいくつかの例を使ってこれを解決できますか?

109
Tim

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

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

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
104
Richard M

遅い回答

簡単な説明

apply_filters() は_global $wp_filters_配列と対話します。基本的に、現在のフィルター(またはフック)にアクション(/コールバック関数)がアタッチされている場合に配列をチェックしてから呼び出します。

長い説明

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

27
kaiser

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

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

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

1
Steve