スポンサードリンク

Wordpress
WordPress

最近、ホームページ制作でWordpress(ワードプレス)をカスタマイズすることが増えてきております。

・・・このブログもWordpress(ワードプレス)で構築されておりますが。

ブログだけだったら、そこまでカスタマイズすることなんて無いんですけど

今回ホームページの制作のためにカスタマイズをする必要になりました。

そこで、カスタマイズによく使うフック関数をいろいろ調べて試してみて、何となく使い方が分かりましたので覚書として残しておきたいと思います。

スポンサードリンク

WordPress(ワードプレス)のフック関数とは

フック
フック

フィルターフックと言うのはWordpress(ワードプレス)にある関数の1つで、Wordpresss(ワードプレス)の関数が行われるタイミングがあります。

そのタイミングに合わせて起動すると言う関数のことです。

タイミングに合わせることができるので、タイミングに引っ掛けるという意味でフック関数というみたいです。

フック関数で使うのは2つ

フック関数を使う場合、使う関数は以下の2つです。

  • add_filter(アドフィルター)
  • add_action(アドアクション)

使う関数が2つありますが、どちらも機能はほぼ同じです。

違うは、apply_filters(アプライフィルターズ)関数に引っ掛けるのがadd_filter(アドフィルター)で、do_action(ドゥアクション)関数に引っ掛けるのがadd_action(アドアクション)です。

引っ掛ける元となる関数が違うため、2つあります。

どのタイミングで追加の機能を使いたいかでどちらを使うか決めて良いと思います。

また、機能はほぼ同じですが違いが少しあります。

do_action()は戻り値がなく、(処理だけ実行したい)
apply_filters()は戻り値がある(何らかの出力がしたい)

つまり、add_action(アドアクション)を使うと戻り値が無いため、do_action(ドゥアクション)関数のタイミングで処理を実行したいものを実装でき、add_filter(アドフィルター)は戻り値があるため、apply_filters(アプライフィルターズ)関数のタイミングで受け取った値を加工して戻すことができるということになります。

add_filter
(アドフィルター)
add_action
(アドアクション)
フックする関数
(実行するタイミング)
apply_filters
(アプライフィルターズ)
do_action
(ドゥアクション)
戻り値 あり なし

【参考】フック一覧

フック関数はどういう時にどう使うのか

ピース
ピース

では、フック関数はどういう時に使うかというと、テーマで足りない部分を補いたいけど、プラグインでは補えない時に使うといいです。

特に、最近では『子テーマ』を使うテーマも増えていますから、『子テーマ』のfuntion.php(ファンクション)にフック関数を書いて表示のカスタマイズを行っておけば、『親テーマ』が更新されても影響は少なくなります。

また、add_filter(アドフィルター)とadd_action(アドアクション)どちらを使うかというのも、追加したい部分がapply_filters(アプライフィルターズ)なのかadd_action(アドアクション)のどちらが使われているかで判断すればいいです。

ただ、戻り値のありなしもあるので、使うイメージとすると

add_action
add_action

add_action(アドアクション)【緑】はdo_action(ドゥアクション)【赤・青・黄】に追加するイメージ。

でも、add_filter(アドフィルター)は戻り値があるため、記事の内容や表示されているHTMLを加工できるメリットはあります。

なので、イメージでいうと

add_filter
add_filter

add_filter(アドフィルター)【緑】はapply_filters(アプライフィルターズ)【赤・青・黄】の【青】を消して、残った【赤・黄】の前後に追加できるイメージです。

スポンサードリンク

フィルターフックの書き方

コーディング
コーディング

add_filter(アドフィルター)の場合

<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
引数 内容
$tag ひっかけたいapply_filters(アプライフィルターズ)の名前
$function_to_add $tagで指定したapply_filters(アプライフィルターズ)が実行された時に呼び出したい独自の関数
$priority $tagで指定したapply_filters(アプライフィルターズ)に登録された独自の関数の中で、この関数を実行する順序。数値が小さいほど早く実行し、同じ数値の場合は追加された順に実行する。(初期値:10)
$accepted_args 関数が受け取る引数の個数。省略化(初期値:1)

add_filter使用例

function add_before_after( $data ){
    $data = "ここから". $data . "ここまで";
    return $data;
}
add_filter('the_content', 'add_before_after', 11);

上記は『the_content』というapply_filters(アプライフィルターズ)に『add_before_after』というadd_filter(アドフィルター)をひっかけています。

中身はapply_filters(アプライフィルターズ)で発生したデータを変数【$data】という名前で受け取って引数として使います。

その変数【$data】の前に「ここから」と後ろに「ここまで」という文字を追加しています。

そして、最後に戻り値で変数【$data】を返してあげれば、『the_content』で表示される内容の前後に追加した文字が表示されます。

また、受け取った変数【$data】を正規表現やreplace関数などを使って文字を入れ替えることもできます。

ちなみに、変数【$data】の名前は別の名前でも問題ありません。

昔、この変数名で悩みましたが何でもよかったですw

add_filter(アドフィルター)を使った、過去に文字を入れ替えたりしているものを以前紹介しています。

(WordPress)記事中にあるh2タグの前にAdsenseコードを入れてみる。

(WordPress)記事中にあるmoreをAdsenseコードに置き換える方法

add_acction(アドアクション)の場合

<?php add_action( $hook, $function_to_add, $priority, $accepted_args ); ?>
引数 内容
$hook ひっかけたいdo_action(ドゥアクション)の名前
$function_to_add $hookで指定したdo_action(ドゥアクション)が実行された時に呼び出したい独自の関数
$priority $hookで指定したdo_action(ドゥアクション)に登録された独自の関数の中で、この関数を実行する順序。数値が小さいほど早く実行し、同じ数値の場合は追加された順に実行する。(初期値:10)
$accepted_args 関数が受け取る引数の個数。省略化(初期値:1)

add_action使用例

function add_head (){
    echo 'ヘッダーに追加できるよ';
}
add_action ('wp_head','add_head',11);

上記は『wp_head』というdo_action(ドゥアクション)が実行された後に、文字列を追加するものです。

テーマによって『wp_head』の場所が違うと思いますが、『wp_head』の実行された後に入れたい文字列があればこちらの方法で追加がでします。

テーマによってはhead(ヘッド)タグにあるようなので、追加のmeta(メタ)タグを入れたりすることができるみたいです。

また、引数に変数を入れていないのは『wp_head』で変数を受け取る必要がなかったためです。

何かしら受け取ってif文などで条件分岐してもいいと思います。

フィルターフックのまとめ

パソコン作業
パソコン作業

ようやく理解ができたような感じがするフック関数です。

add_action(アドアクション)は使うことがあんまりないのですが、今回調べた感じではadd_filter(アドフィルター)は内容の加工、add_action(アドアクション)は追加したい項目などに使う感じでしょうか?

比較的、add_filter(アドフィルター)の方が融通が効くようなのでadd_filter(アドフィルター)を使用するのが基本で考えて、add_filter(アドフィルター)が使えない場所はadd_action(アドアクション)を使うようにしてもいいかもしれません。

それではまた

スポンサードリンク