WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

WordPressのAPIフック機能

APIフックとは?

テーマやプラグインの新しい動作をWordPress自体に連動させることができ、本体にデフォルトである機能を修正しなくてもカスタマイズできるもの。

アクションフック(add_action)とフィルターフック(add_filter)

アクションフックもフィルターフックも基本的に動作は同じです。

アクションフック

アクションフックはWordPressで発生する特定のイベントなどユーザー側が行う行動にフックをする。
記事が保存された時、公開された時、クリックされた時など、CSSやJSの読み込みも一般的にはwp_headにフックさせる。

アクションフックを使った機能の追加

add_action( ‘hook_name(フック名)’, ‘faction_name()(実行する関数名), priority(優先度), option(引数)’ );
priorityはデフォルトは10

フィルターフック

フィルターフックはテンプレートやHTMLを出力するテキストデータなどをフックする。
(*WordPressには1000カ所以上のフィルターフック、500以上のアクションフックが用意されている。)

フィルターフックを使った機能の追加

add_action( ‘hook_name(フック名)’, ‘faction_name()(実行する関数名), priority(優先度), args_num(引数の数)’ );

remove_action、remove_filterはフックされている関数を取り除く

apply_filters()とdo_action()

フックを使用したいときにcodeXから探すのは基本ですが、少し複雑なフックだとWordPressのデフォルト設定ファイルから探す必要があります。その際にはapply_filters()とdo_actionを探すことになります。

apply_filters()

apply_filters()が実行されている場所がフィルターフック
WordPressの内部ではHTMLの出力や各種動作の設定、環境変数やフォームから入力など、あらゆる値がapply_filters()という関数を経由して出力されている。

(例)簡単なHTMLを返す

function my_html_return() {
return apply_filters( ’new_filter_hook', ‘Hello World’ );
}

これでHello Worldに対して ‘my_filter_hook’ というプラグインを追加したことになる。
このように追加したフックはプラグインやfunctions.phpでフィルターをかければ出力のカスタマイズをすることもできる。

add_filter( ’new_filter_hook’, ‘add_the_message’ );
function add_the_message($message) {
$message = “太郎”;
return $message;
}

*apply_filtersは第二引数を意識する必要がある(元のコードを読むしかない)

apply_filters( ‘filter_name’, ‘arg’, ‘arg2’, ‘arg3' );
第二引数 → arg、arg2、arg3

do_action()

do_action()が実行されている場所がアクションフック
(例)

function wp_head() {
 do_action( ‘wp_head’ );
}

*これを見るとwp_head()関数はwp_headというアクションフックを設置してあるだけなのです。

アクションフックに対してアクションを登録してみます。

add_action( ‘wp_enqueue_scripts’, ‘my_wp_enqueue_scripts’ );
function my_wp_enqueue_scripts() {
 wp_enqueue_scripts( ‘my-script' pugin_url( ‘js/myscript.js’, __FILE__ ), array( ‘jquery’ ), true );
}

まとめ

今回はAPIフックについておおまかな説明をしました。WordPressをカスタマイズする時にフックは偉大な存在です。全てを覚える必要はありませんが、こういうフックもあるのか〜!くらいには知っておけると役立つこと間違いないでしょう!

関連記事

ページ上部へ戻る