WordPressを使った開発をしているときに、ふとthe_content
というフィルターがどのような処理を投稿テキストに加えているのか気になりまして、処理を定義している箇所をWordPressのコアの部分から探しておりました。
grepした結果wp-includes/default-filters.php
にてadd_filter( 'the_content', 'hogehoge' )
のようなコードが見つかりました。しかし、この時私はfunction the_content()
という定義があるんだと勘違いしており、さらにgrepを続けていました。しかしそんなものはあるはずもありません。もう一度codexを読みなおして、add_filterでフックする関数を追加しているのだからそこで定義している名前の関数を見つければ処理が書いてある、と推測しました。
推測に自信がなかったので、困ったときのTwitter。
wp-includes/deault-filters.php でフィルターのデフォルトの動作というか、デフォルトでフックする関数を追加してるっていう理解で合ってるのかな?
— Takayuki at kwskさん (@TAKAyuki_atkwsk)
12月 12, 2012
デフォルトのフィルタリングって実際何やってるの?っていうのを見るときはここで add_filter() している関数を見ればいいのかな。
— Takayuki at kwskさん (@TAKAyuki_atkwsk)
12月 12, 2012
今度まがりんさんに会った時に聞いてみよう。
— Takayuki at kwskさん (@TAKAyuki_atkwsk)
12月 12, 2012
@takayuki_atkwsk そうすよ。他にも、デフォルトでフックしてるとこはあるけど、メインは、そのファイルにまとまってますね。
— _sさん (@jim0912)
12月 12, 2012
@jim0912 おお。拾ってくれてありがとうございます!w これですっきりしました^^
— Takayuki at kwskさん (@TAKAyuki_atkwsk)
12月 12, 2012
うっすら拾ってくれるといいなと思っていたところ、WPの師匠 @jim0912 さんから教えていただきました。ありがとうございました!
というわけで、フィルターのデフォルトの処理が気になる人はwp-includes/default-filters.php
(※他にも定義している箇所がある)でadd_filterしている関数の中身を見るといいんじゃないかと思います。ちなみにthe_content
にフックしている関数はwp-includes/fomatting.php
などに定義されています。
追記
ブログ書いた後に@jim0912さんからまたもや情報をいただきました、ありがとうございます。このアフターケアはさすがですね。
@takayuki_atkwsk ちなみに、そのフックにどんなフィルターやアクションがかかっているか知りたいなら、グローバル変数の$wp_filter['フック名'] をvar_dumpで見てみるといいです。
— _sさん (@jim0912)
12月 12, 2012
@takayuki_atkwsk the_content に掛かっているのを知りたかったら、var_dump( $wp_filter['the_content'] ); てな感じです。
— _sさん (@jim0912)
12月 12, 2012