2022年05月06日
WP アクションフック
ここではWordPressの アクションフック を解説します。
アクションフックとはWordPressの実行過程でユーザに ここで何かやる事はありますか? と聞いてくる仕掛けで、WordPressに各種機能を実装する時に利用します。
ここでは下記順番でアクションフックを解説します。
1.add_action()とは
add_action()で、WordPressで用意された「アクションーフック名」で実行する関数をfunctions.phpに登録する事によりWordPress機能をカスタマイズする事ができます。
記述の基本形は下記になります。
function 関数名($Reference1,$Reference2) { // $Reference1と$Reference2は、参照変数です。 // 上記の参照変数等を参考にして各種機能を定義します。 } add_action( 'アクションフック名' , '関数名' , $priority , $num );
5行目の add_action のパラメータ
$priority (整数)(オプション)
実行順序を指定します。デフォルト値は10になります。
※重要
同じアクションフック名でが10と20があった場合、10→20の順番で実行されます。
$num (整数)(オプション)
受け取る参照変数の数を指定します。デフォルト値は1になります。
※重要
参照変数が2個ある場合は2を指定しないとアクションフックは動きません。
下記にWordPressが用意してくれているアクションフック名を解説していきます。
1WordPressの設定時に呼ばれるアクションフック名
アクションフック名 | 説明 |
after_setup_theme | function.phpが読み込まれた後に実行されるアクションフックです。
WordPress機能の設定に利用します。 |
2.WordPressの実行時に呼ばれるアクションフック名
アクションフック名 | 説明 |
wp_enqueue_scripts | ヘッダーが送信される時のアクションフックです。
javascriptやCSSのlロードに利用します。 |
wp_head | wp-head()関数が実行される時にフックします。
カスタマイザで修正した内容を反映させる時に利用します。 |
pre_get_posts | WPがDBから投稿や固定ページを抽出する時のアクションフックです。
Queryの条件(並び順、対象要素)を変更する時に利用します。 |
3.管理画面の操作時に呼ばれるアクションフック名
アクションフック名 | 説明 |
admin_init | ユーザーが管理画面にアクセスする時のアクションフックです。
ビジュアルエディタを変更する時に利用します。 |
admin_menu | 管理画面のメニュが表示される時のアクションフックです。
管理画面のメニュの名称を変更する時に利用します。 |
widgets_init | 管理画面の「外観→ウィジェット」が表示される時にフックされます。
サイドバーの設定やウィジェット部品の編集を行う時に利用します。 |
manage_posts_custom_column | 管理画面の「投稿一覧」が表示される時のアクションフックです。
投稿の新規カラムにデータを取り込む時に利用します。 |
manage_pages_custom_column | 管理画面の「固定ページ一覧」が表示される時のアクションフックです。
固定ページの新設カラムにデータを取り込む時に利用します |
4.ビジュアルエディタ関連のアクションフック名
アクションフック名 | 説明 |
save_post | 投稿や固定ページが[公開]または[更新]されたときにフックされます。
WordPressのメタデータ(カスタムフィールド)の新設や更新に利用します。 |
5.外観→カスタマイズの時に呼ばれるアクションフック名
アクションフック名 | 説明 |
customize_register | 外観→カスタマイズの時に実行されるアクションフックです。
余分なメニュの削除や新設カスタマイズメニュを作成する時に利用します。 |
その他のアクションフックもあります。詳細は下記を参照してください。
2.do_action()とは
ここでは do_action() と add_action() の関係を解説します。
まずは簡単な事例で説明します。
<header.php>のある場所に下記を記述します。
<?php do_action( 'my_action_hook');?>
■上記はアクションフックの'my_action_hook'を実行しなさい。という命令だけで、このアクションフックが作られていないと何もしません。
<functions.php>にアクションフックの処理を記述します。
function my_func(){ echo 'こんばんは<br>'; echo 'お元気ですか?'; } add_action( 'my_action_hook', 'my_func', 10, 1 );
■アクションフック'my_action_hook'にecho文を指定しています。
その結果、<header.php>が実行されると、今度は下記が表示されます。
こんばんは
お元気ですか?
すなわち do_action() とは、テンプレートの利用者に ここで何かやる事はありますか? と聞いてくる仕掛けで、項番1はWordPressが用意してくれている「アクションフック名」です。
Welcart(WordPressを使った無償のe-Commerceシステム)等のプラグインをインストールすると、このプログラムでもユーザがカスタマイズして良い所に下記の名称で do_action() が設定されているので、これを使ったシステムのカスタマイズができるようになっています。
下記は一部です。
アクションフック名 | 説明 |
usces_action_after_send_ordermail_to_manager | サンキューメール(管理者宛)の送信直後に処理を実行 |
usces_action_after_send_ordermail_to_customer | サンキューメール(購入者宛)の送信直後に処理を実行 |