カスタマイズに必須!SWELLのフィルターフック・アクションフックの使い方
SWELLにはテーマ内に組み込まれた独自のフィルターフックやアクションフックがあります。
残念ながら、SWELLの公式サイトにフィルターフックやアクションフックの詳細な解説や説明はありませんが、有志の方が解説している記事があります。
ただ、その情報は非公式な情報であり、最新の情報ではない場合がありますので、最終的には自分で調べてカスタマイズする方が安全だと思います。
前提:SWELLはカスタマイズしにくいテーマである
WordPressの標準関数を独自関数に置き換えている
理由はよくわからないのですが、SWELLはWordpressの標準関数を自前の関数で置き換えている箇所が多数あります。
その影響で、Wordpress標準関数にあるフックを使っても、SWELLの独自関数に置き換えられている箇所はフックが有効になりません。
SWELLの独自関数にはフックが用意されていない
では、SWELLの独自関数のフックを使えばいいかというと、そうは問屋が卸しません。
SWELLの独自関数にはフックが仕込まれていませんし、独自関数を置き換えることもできないものがほとんどです。
そうなると、子テーマを導入してテンプレートパーツを置き換えるしかなく、今の時代ではかなり古めかしいカスタマイズ手法でカスタマイズすることになります。
SWELLのアクションフックやフィルターフックの調べ方
SWELLは以前はgithubでソースコードが公開されておりました。
しかし、いまでは非公開となっております。
GPLライセンスのテーマですので非公開にする理由が正直よくわからないのですが、共同開発しているのでもなければ公開するメリットも無いので、今後もgithubでソースが公開されることは無さそうです。
購入したSWELLテーマの最新版をPCにダウンロードして、以下のキーワードで全てのphpファイル(*.php)を検索するとフックが見つかります。
apply_filters
do_action
SSHが使えるのであれば、grepで検索してしまうのが簡単ですね。
Windowsであれば秀丸エディタにgrep機能がありますので、その機能が使えます。
フックを使う上で必要な知識
apply_filters()
とは?
apply_filters()は、フィルターフックを追加する関数です。
apply_filters( string $hook_name, mixed $value, mixed $args ): mixed
add_filter()関数がWordpressカスタマイズでよく出てきますが、apply_filters()関数はそのフックを実行する場所に使われます。
この辺は初心者の方にはとても分かりにくい概念の1つでしょう。
話を単純にするならば、フィルターフックというのはその名の通りフィルターでして、『入力』をフィルター(『callback関数』)して『出力』するということです。
$out = apply_filters(‘filter_name’,$in,$ref1,….);
フィルターフックのcallback関数が追加されなければ、入力がそのまま出力に出てくるだけ(スルー状態)です。
apply_filtersのその他の引数には、callback関数内で参照できる変数を渡すことができます。
add_filterのcallback関数を書くときに、条件によって動きを変えたい場合には外部の変数値を参照することで実現できます。
add_filter()はcallback関数を登録する関数ですが、add_filterの引数にpriorityを指定すれば、他のcallback関数との優先順位を指定できます。
add_filter( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true
do_action()
とは?
do_action()
は、アクションフックを追加する関数です。
do_action( string $hook_name, mixed $arg )
add_action()関数はWordpressカスタマイズでよく出てきますが、do_action()
関数はそのフックを実行する場所に使われます。
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true
アクションフックとフィルターフックの違いは、簡単です。
アクションフックは、callback関数の戻り値は変数で返せません。
callback関数を実行するだけです。
SWELLカスタマイズの事例
SWELLフックの参考サイト
SWELLのフックは以下のサイトにまとまっています。具体的な使い方まではすべてのフックに対して書かれていませんので、ある程度のスキルは必要になります。
コメント