do_action(”フック名”)
→「フック名」の関数を実行する
add_action(”既存の関数名”、”実行する関数名”)
→既存の関数名(フック)の関数が実行されると、”実行する関数”を追加で実行
apply_filters
→add_filterを呼び出す。
add_filterがなければ、第2引数を返す
(例1)
前提1.プラグインの中で以下の記述があるとする
return apply_filters( 'bp_get_activity_parent_content', $content );
↑この記述があればラッキー♪
前提2.function.phpの中か、PHPファイルの中に、以下の記述を書く
add_filter('bp_get_activity_parent_content', 'hoge', 10, 1);
前提3.function.phpの中に、以下の記述を書く。
function hoge ($a) {
・・・・・・
return $a;
}
<上記の動き>
-----------------------
(追記)
わかりやすいように簡単に書く
1.'bp_get_activity_parent_content' が発生する
2.add_filterにより、hoge()が実行される
-----------------------
1.apply_filtersで、'bp_get_activity_parent_content'というフックを作成する。以後、add_filterで、'bp_get_activity_parent_content'がないか監視する
2.上記の場合、add_filter('bp_get_activity_parent_content', 'hoge', 10, 1);があるので、
apply_filters( 'bp_get_activity_parent_content', $content ) の部分で、
add_filterの第2引数の 'hoge()' に $content を引き渡す。
3.add_filterで、hoge()が実行される。その際、hoge()に、受け取った$contentを引き渡す。
4.hoge()が実行され、その戻り値が、apply_filters に戻される。
5.よって、
return apply_filters( 'bp_get_activity_parent_content', $content );
の戻り値は、hoge()の結果となる。
返り値が存在しないか、「フックhoge」にセットされた関数がないときは、$a を返す。
(注意事項1)
add_filter('bp_get_activity_parent_content',・・・)を探してもないときは、
apply_filters( 'bp_get_activity_parent_content', $content )
の第2引数である、 $content が、
return apply_filters( 'bp_get_activity_parent_content', $content );
の戻り値となる。
(注意事項2)
<add_filter()を書く位置について>
テーマ中のfunction.phpの中に書くと、
前提1の
return apply_filters( 'bp_get_activity_parent_content', $content );
が実行されるすべての箇所に影響を及ぼす。
影響を限定したい場合は、
テンプレートファイル中の影響を及ぼしたい箇所に、
<?php add_filter('bp_get_activity_parent_content', 'hoge', 10, 1);?>
<?php bp_activity_parent_content(); ?>
<?php remove_filter('bp_get_activity_parent_content');
?>
のように、add_filterとremove_filterとで囲むように書く。
参考にしたページ
Wpプラグインのフックを実行(do action) - wiki - PCスキルの小技・忘却防止メモ
WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方 | 株式会社LIG