teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/02/20 23:34

投稿

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