- 更新日: 2015年2月26日
- WordPress
WordPressのadd_action()はadd_filter()のエイリアス
WordPress の PHP カスタマイズで、フックを利用する際に add_action() と add_filter() の2通りの書き方を見かけたので、ちょっと調べてみた。WordPress で何かしらのアクションの前後などに、任意の処理を差し込むフック用のAPI関数です。
add_action() は add_filter() のエイリアス
公式の WordPress ドキュメントで add_action() について調べたところ、以下の記述を発見。
この関数は add_filter() のエイリアスです。
な〜んだ、やはり違いはなく同じもの。ただのエイリアスでした。
ソース確認
以下のページで、現行バージョン(4.1)の WordPress の該当箇所のソースを確認できる。実際には手元のソースコードで grep しました。
plugin.php in tags/4.1.1/src/wp-includes WordPress Trac
add_filter()
81行目〜
1 2 3 4 5 6 7 8 |
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { global $wp_filter, $merged_filters; $idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority); $wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args); unset( $merged_filters[ $tag ] ); return true; } |
add_action()
429行目〜
1 2 3 |
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { return add_filter($tag, $function_to_add, $priority, $accepted_args); } |
add_action() は、add_filter() を呼び出しているだけです。
何でこれでちょっと混乱したかと言いますと、最初適当にぐぐってたら、add_action() と add_filter() で挙動が異なるとか、ケースによって使い分けする、などと書いてある記事を目にしましてですね…。これどっちも同じもんなんじゃないかな〜と疑って、公式ドキュメントとソースを確認してみましたところ、案の定ただのエイリアスだったという。
WordPress はユーザー数も多く裾野も広いですので、PHPをかじっただけの人とかもカスタマイズに手を出してるんでしょう、おそらく。その分、検索で引っかかる情報が玉石混交な印象です。WordPress のカスタマイズを仕事でしっかりと行うのであれば、公式ドキュメントとソースコードを第一に信用したほうが良さそうです。
- WordPress の関連記事
- WordPressをTwitter Bootstrapでレスポンシブデザイン対応
- WordPressブログに更新日を表示
- WordPressにOGP設定・プラグインなしでFacebook/Twitter Cards対応
- WordPressでパンくずリスト・複数の親子カテゴリーを表示
- WordPressでプライベートな非公開ブログを運用
- BackWPupでエラー ERROR: Dropbox API: (35)
- ブログ・WordPress記事をFacebookに自動投稿するIFTTT設定
- RSS Graffitiが終了…代替にはIFTTTが使える
- WordPressで親カテゴリーに属する子カテゴリーの一覧を出力
- wp_list_categoriesでリンクなしで投稿数ゼロのカテゴリを表示 – WordPress
Leave Your Message!