あるフィルターに適用された関数(フック)をすべて出力する

WordPressのロゴ。

the_content などのフィルタに現在適用されているフィルタを確認したかったので、 特定のフィルタにフックされている関数をすべて取得する方法について調査しました。 都合よく stackoverflow に掲載されていたので、それを利用させてもらいます。

フィルタフックをすべて出力するコード

次の print_filters_for 関数は、print_filters_for('the_content')のように、 フィルタ名を指定して実行すると、そのフィルタにフックされているすべての関数が出力されます。 この関数では出力して確認していますが、単純に取得するときは $wp_filter[$filtername] を上手く利用すればよいと思います。

function print_filters_for($filtername)
{
    global $wp_filter;
    print "<pre>";
    print_r($wp_filter[$filtername]);
    print "</pre>";
}

{{small align-center
フィルタをすべて出力するコード
}}



== the_content の出力例



都合上多少弄ってありますが、ほぼ初期状態の WordPress で ```function print_filters_for('the_content')``` を実行した結果は次の通りです。


{{code
Array
(
    [11] => Array
        (
            [capital_P_dangit] => Array
                (
                    [function] => capital_P_dangit
                    [accepted_args] => 1
                )

            [do_shortcode] => Array
                (
                    [function] => do_shortcode
                    [accepted_args] => 1
                )

        )

    [10] => Array
        (
            [wptexturize] => Array
                (
                    [function] => wptexturize
                    [accepted_args] => 1
                )

            [convert_smilies] => Array
                (
                    [function] => convert_smilies
                    [accepted_args] => 1
                )
…
)
}}

{{small align-center
= 出力結果の例

Reference

WordPress: How do I get all the registered functions for 'the_content' filter