提示のコードはthe_title
フィルターフックにtest_function
関数をフックしている、つまり、the_title
関数を実行するとthe_title
関数で出力される文字列がtest_function
関数で処理されてから出力されるようになるということです。
the_title
フィルターの実体はwp-includes\post-template.php
のget_the_title
関数内にあります。
「WordPress フィルターフック」とかのキーワードで調べるとたくさんのページで解説されていますので、参考にしてみてください。
追記(以下二件のコメントを受けて)
回答ありがとうございます。フックの効果とはthe_titleが読まれた時に関数を実行するだけですよね?例えばthe_titleの後ろに!をつけたいなら、関数内は$title . '!' );になりますよね、、しかしなぜそれが変数で書かれているのか、しかも第一引数で指定したものなのかがわかりません。function test_function{ return linkbefore,linkafterとかでいいのではないのですか?なぜワードプレスは$titleをグローバル変数でもないのに、the_title();で出力されたタイトルの代わりと判断できるのですか??
例えば、このフィルターフックの効果に、実行する関数の第一引数をタイトルと見なし、タイトルに付け加えたい記述は、’文字列’ . 第一引数で適当に決めたもの . '文字列’で書きなさいと決められているならわかりますが、、
テンプレートタグでもないのに(独自の関数)、第一引数をタイトルがあるべきところとみなす、なんてワードプレスはわかるのですか?
’文字列’ . 第2引数で適当に決めたもの . '文字列’ や、 ’文字列’ . 引数に書いておらず、さらに変数でもないもの . '文字列’ でもちゃんと文字列は付け加えられるのでしょうか。
- フィルターフックした関数にはapply_filterで指定された変数が順番に引数として渡される
- フィルターフックした関数に渡される第一引数はフィルターする値である
- フィルターフックした関数はフィルターした値(加工した値)を戻り値とする
と、WordPressの仕組みでで決まっているという点を理解してください。
フックした関数側では別に引数の名前はなんでもよいです。たとえば以下でも構いません。
PHP
1function test_function( $aiueo, $id = null){
2 return '「'.$aiueo.'」';
3}
4add_filter( 'the_title', 'test_function',10,2 );
もし、この構造に不自然さを感じるようであれば、ご自分でPHPコードを書いて、WordPressのフィルターフックの仕組みを変更すればよいと思います。