
WordPressサイトをカスタマイズするときに、必要な概念がフックです。
フック自体を覚える必要はありませんが、その概念をしっかり理解しておくことで、
いつ
どのタイミングで
どの要素がかわるのか
ということなどが、わかるようになります。
この記事では、WordPressのカスタマイズをする際のタイミングを指定するフックの概念について解説をしてきます。
WordPressのフックとは?
フックとは、独自処理を挿入することのできるトリガーです。
WordPressサイトは、ブラウザにサイトを表示する際の処理がプログラムによって決められています。
ユーザーがURLをクリック→処理A→処理B→ウェブサイトを表示
フックとは、上記の流れの中に独自の処理を発動させるトリガーを挿入することで、
ユーザーがURLをクリック→処理A→フック→処理B→ウェブサイトを表示
フックを使ったトリガーを挟むことで、特定のイベントを発生させたり、データベースに情報を追加したりすることができるようになります。
フックを挿入するときに考えることは、
どのタイミングでフックを入れるのか
どんな処理を入れるのか
の2つです。
これらの処理内容をフックと共にfunctions.phpに記述して、フックを挿入することができます。
アクションフックとフィルターフック
フックには大きく分けて2つの種類があります。
アクションフックとフィルターフックです。
アクションフックは、特定のイベント発生時に処理を行うためのフックです。
フィルターフックは、データベースにデータを追加したり、データを加工するためのフックです。
処理によってはどちらを使っても、タイミングこそ異なるものの表示結果が同じになることもあります。
アクションフックのコード解説
フックを使用する際は、どのフックを使うのかをまず決めます。
アクションフックで使うタグは、add_actionを使います。
add_achitonは、特定のアクションに関数をフックするタグで4つのパラメータがを持っています。
<?php add_action($hok,$function_to_add,$priority,$priority,$accepted_args); ?>
パラメータにはそれぞれ以下のような役割を持っています。
$hok
フックされるアクション名を記述します。アクション名はWordPressに定義されたものの中から選択して使用するため、タイミングを自分で指定して作る必要はありません。
$function_to_add
こちらでは$hokによって指定されたタイミングで実行される任意の関数名を記述します。
実行される関数の中身は、add_actionの前後に記述します。
$priority
優先順位を指定するパラメータです。
$accepted_args
フックした関数が受け入れられる引数の数です。
$hokと$function_to_addの記述は必須ですが、$priorityと$accepted_argsはオプションのパラメータとなるため、必ず記述する必要はありません。
アクションフックの記述例
function cpt_register_works(){$labels = [
"shingular_name => "works",
"edhit_item" => "works",
];
$args = [
"label" => "Works",
"labels" => $labels,
"description" => "",
"public" => true,
"show_in_rest" => true,
"rest_base" => "",
"rest_controller_class" => "WP_REST_Posts_controller",
"has_acrchive" => true,
"delete_wit_user" => false,
"exclude_from_search" => false,
"map_meta_cap" => true,
"hierachical" => true,
"rewite" => [ "slug" => "works","with_front" => true],
"query_vae" => true,
"menu_postion" => 5,
"supports" => [ "title","editor","thumbnail"],
];
register_post_type("works",$args);
add_action('init', 'cpt_register_works');
上記をfunctions.phpに記述するとWordPressの管理画面に「Works」というカスタム投稿タイプを追加することができます。
フィルターフックのコード解説
フィルターフックも原理はアクションフックと同じです。
フィルターフックは、add_filterというタグを使用します。
add_actionと同じくパラメータも4つで、その役割も同じです。
フィルターフックの記述例
function my_excerpt_length(){
return 30;
}
add_filter('exerpt_length','my_excerpt_length',999);
上記をfunctions.phpに記述するとテンプレートファイルで指定したmy_excerpt_lengthのテキスト量を30文字に限定することができます。
まとめ
フックはそれ自体を理解してもカスタマイズできるわけではありません。
フックを起点に実行する関数を覚える必要がありますが、フックを理解することで
どのタイミングで
何がじっこうされるのか
を理解できるようになり、カスタマイズするときでも意識してコードを記述することができるようになります。
そうすることで、インターネットからコピペだけして中身を理解しないまま、サイト構築するということがなくなります。
概念を理解し、テクニックと組み合わせてWordPressを自由にカスタマイズできるようになりましょう。