質問: 高度なadd_ *関数ラッパーの実装 add_action()とadd_filter()は主要な関数です。ただし、シナリオによっては関数をもう1つ追加してどこかにフックする方法は大きくて不便になります。add_*関数の上にラッパーを使ってコードを合理化できるいくつかのユースケースを自分で決めました。毎回余分な機能よりもシングルライナーの方が扱いやすいもの。 任意のフィルタリターンを追加します。すでに__return_*関数がありますが、それらは定義によって非常に制限されています。あなたが欲しいものを単にfilterに渡してはいけません。無数のfunction return_stuff(){return 'stuff';}から節約 フィルタ内でxをyに置き換えます。無数のfunction replace_stuff(){return str_replace();}から節約 任意の引数でアクションを追加します。アクションはフックで渡された引数で起動します。しかし時々あなたはそれを気にせず、単に特定のフックであなた自身の引数であなたの関数を走らせたいだけです。無数のfunction echo_stuff(){echo 'stuff'};などから節約できます。 そう... あなたが望む、そして/または実際に使用する他のユースケースはありますか? そのようなラッパーをどのように実装しますか?可能なアプローチはたくさんあります(クロージャ、追加の引数を保持するためのグローバル変数、コールバックでオブジェクトを渡すなど)。 ps(1)と(3)の実装はすでにいくつかあります。提案された)はしばらくして私のコードの一部を投稿するので、私は楽しみを損なうことはない:)例現在の方法:add_filter('wp_feed_cache_transient_lifetime', 'change_transient_lifetime', 10); function change_transient_lifetime($lifetime) { return 3600; } ラッパー:add_filter_return('wp_feed_cache_transient_lifetime', 10, 3600);
回答: クイックワンライナーリターンのような単純なケースでは、匿名関数を直接add filter呼び出しにフックすることが可能であることを覚えておいてください。例えば:add_filter('some_filter_hook', function($v){return str_replace('..', '.', $v);}); add_action('some_action_hook', function(){echo '....';});