You are here: Home » php » wordpressのフィルターフックとアクションフックの簡単な使い方

wordpressのフィルターフックとアクションフックの簡単な使い方

colored-87693_640

wordpressには便利機能が沢山あるのですが、その中でもかなり便利な機能のフックという機能があります。フックには二つの種類があり、フィルターフックとアクションフックがあります。

スポンサーリンク

フックとは

プラグインやテーマの動作をwordpressに連動させることができるのです。

例えばwordpressで記事を投稿すると、見出し等以外は基本的にpタグで囲まれた状態で表示されます。

wpコア

これは、single.phpファイルなどで<p>タグを使ってるわけではなく、wordpressのコアファイルですでに本文にはpタグを入れると指定されているからです。こんな感じで実はいろんなところでwordpresのコアファイルを通してサイトが動作してたりします。

 

つまり、wordpressのフィルターを通してサイトが動いてるという事です。

 

人によってはなんでpタグとかいれんの?(他にも様々な機能でコードなどを追加、変更されてます。wp-includes辺りで)と勝手にコードを変えられたりするのがいやだって人もいるはずです。この場合wordpressのコアファイルをいじろうと考えがちですが、それをするとメンテナンスが良くないし、更新時に変更が削除されてしまうので、それを介さないで変更をする仕組みが

フックという機能です。このフックはwordpress本体をいじらないでカスタマイズすることができるので、非常に便利です。

wordpressで決められたルールを、自分で作ったルールに置き換えて優先させることができるということです。

 

フックにはアクションフックとフィルターフックがあります。

何度も言いますが、フックとは、ある動作をする際に自分で決めたルールを実行するということです。それには二種類の方法があって、それがアクションフックとフィルターフックです。

 

アクションフックadd_action

アクションフックとは、特定のイベントなどが発生する時にwordpressのコアファイルを実行するフックの事です。実行するにはadd_action()などのアクションapiを使って動かします。

なにか、イベントがあるときにはアクションフックです。

 

フィルターフックadd_filter

フィルターフックは、データの出入力やなんらかのやり取りする際にはadd_filterを使って特定の処理をする機能です。上で書いたpタグがこちらになります。

なにか、データのやり取りをする際はフィルターフックです。

 

ですが、基本的にはadd_action()もadd_filter()も同じような動作をします。

 

 

無意味な実例と、使えそうな実例

投稿するだけでpタグが勝手にくっついてくるのは、wp-includes/default-filters.phpのなかでwpautop();という<p>…</p>タグに置き換える関数が働いているからです。

こんな感じで記述されてます。この場合、第二引数のwpautopでpタグを指定してます。

例えばwpautopの記述をbackslashitに変更すると

backslashitは数字の前にバックスラッシュをつける関数です。まったく意味ないけど数字を入力して投稿すると、以下のようになります。

backslashit

自動でバックスラッシュ付きになりました。

でもwordpressの中身は絶対に変更しないでください、更新で無意味な作業になります。上の例はただの例です。

 

使える例として以下の記述をfunctions.phpにすると、続きを読むリンクが別タブで開きます

 

フックを無効にする場合remove_filterかremove actionを使います

remove_filterとはコアファイルにあるフックを無効にする場合に使います。一つの例としてpタグが自動でついてくるのを無効にする場合、以下のようにfunctions.phpに記述します。

wpautop

pタグ消えました

add_filterの部分がremove_filterに変更されただけですが、しっかり機能します。

function.phpに記述すると、大体すべてのページで有効化されますので、上の記述をpage.phpなどに記述して、効果を限定することもできます。

 

記述のみで一部分だけremove_filterを適用することも可能です。

この記述だと上記のthe_title()の部分にしか影響しません。

wpautopの部分は自分で関数を作ってそれを記述することが多いです。

スポンサーリンク

フックの記述方法

$tagの部分がフックされるwordprssのapiです。つまりフックの名前になります。

$function_to_addの部分はフックした時実行される関数です。これは用意されているタグを使うか、自分で関数を作るかする。

$priorityの部分に数値をいれます。同じ関数をフックする際にどちらを優先させるか決めます。少ない数値ほど優先度が高いです。初期値は 10です。

$accepted_argsの部分にはフックした際に使う引数の数、つまり、関数が受け取る引数の数です。初期値は 1です。

また、$priority と $accepted_args は必須ではないので省略可能です。

スポンサーリンク

コメントを残す