web-dev-qa-db-ja.com

Add_filterはどの優先順位でコア関数を上書きしますか?

私は投稿の最後にいくつかの追加のサムネイル、チェックボックスなどを追加するプラグインを書いています。

Add_filterを正しく使う方法を見つけようとしています。

基本的に、私は持っています

add_filter('the_content', 'do_some_magic_at_the_end');

そして対応するdo_some_magic_at_the_end関数があり、それは$ contentを取り、それにいくつかのものを追加します。

私はこのフィルタを他のすべてのフィルタの後に追加したいと思います。他のフィルタを上書きしたくありません。ドキュメントにはデフォルトの優先度が10であると書かれているので、the_contentで実行される一連のフィルタに単純に追加されていると思います。

優先順位を1に設定した場合、コア機能は上書きされますか?

5
jim

優先順位の高低に制限がないので、それに対する明確な答えはありません。また、プラグインはこれを使ったコアよりもはるかに慎重ではありません。

  • 11がデフォルトの優先順位の後になるのに適した数です。
  • 遅刻する20
  • 何千もの数字は、彼の何千という数字にゼロを追加しなかった誰よりも遅くするのに適しています。
  • 9はデフォルトよりわずかに早くなるように良い数です。
  • 1は本当に早いものです。
  • 優先順位がマイナスになる可能性があることを覚えている人はほとんどいないため、-1がほぼ決定的に優先されます。

全体的にあなたが他の機能の前にいることを確認したいのであれば、あなたはあなたの特定のセットアップにフックしてそれを通してデバッグするために追加されるすべてをダンプしなければならないでしょう。特定のロード段階でフィルタを追加したり、他のフィルタを移動したりするためのラッパー関数を作成する必要があるかもしれません。

そして、もしあなたが配布用のプラグインを作っているなら、あなたは推測することができますが、あなたは確信が持てません。

14
Rarst

何も上書きしません。それぞれの優先順位は実際には list 使用するフィルタです。同じ優先順位で同じフィルタにフックするいくつかの異なるものがある場合、それらは all 実行されます。

2
Dougal Campbell