お問い合わせ

カスタマイズに必須!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機能がありますので、その機能が使えます。

SWELLを利用する場合にフィルターフック、アクションフックの知識は必要ですか?

少なくともSWELLを利用するだけなら、フックの知識は不要です。SWELLに対して高度なカスタマイズを行いたい場合には必須になります。

フィルターフックやアクションフックでカスタマイズしたらサイトが壊れました。

functions.phpを編集するので、サイトが壊れる可能性があります。復旧の仕方がわからない初心者の方は気軽に踏み込まない方が良いでしょう。

コードによるカスタマイズについてはSWELLフォーラムでも質問は禁止されています。

フックを使う上で必要な知識

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

ソースコードにapply_filtersが仕掛けてある場所を見たら、入力を好きなcallback関数で自由に書き換えるために仕掛けてあるんだなと考えておくと簡単だと思います。

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関数を実行するだけです。

do_actionがある場所好きなHTMLコードを出力するためにadd_actionが使われることが多いです。

SWELLカスタマイズの事例

SWELLフックの参考サイト

SWELLのフックは以下のサイトにまとまっています。具体的な使い方まではすべてのフックに対して書かれていませんので、ある程度のスキルは必要になります。

他の人にもシェアしてね
コメントを閉じる

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

クリックできる目次