• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

FOXWP

WordPressの始め方と使い方をわかりやすく解説!

  • HOME
  • WordPressブログの始め方
  • お問い合わせ
FOXWP / WordPress / WordPressのフックとは?

WordPressのフックとは?

最終更新日:2021年10月28日

目次 非表示
1 フックとは?
2 フックの種類
2.1 アクション
2.2 フィルター
3 アクションをフックする
4 フィルターをフックする
5 優先度
6 引数の数
7 フックを自作する

フックとは?

WordPressがコードを実行する時にあるチェックポイントのようなものです。

フックを見つけるとコードの実行を止めて、そのフックに登録されている関数を確認します。

もし登録されている関数があれば実行した後、処理を続けていきます。

フックには、アクションとフィルターの2種類があります。

フックの種類

アクション

アクションは、特定のチェックポイントで何らかのタスクや出力を行います。

フィルター

フィルターは、変数または出力を変更します。全てのフィルターはパラメータとして、あなたが変更できる変数を提供します。

ワードプレスの関数の多くは、投稿を出力するために利用されます。例えば、the_title()は投稿のタイトルを出力します。

アクションをフックする

アクションをフックするために、add_action()を使います。

add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 )

add_action()は、フック名とコールバックの最低限2つの引数が必要です。3つ目の引数には、優先度を指定できます。

今はadd_action()を例を示します。

add_action('init', 'my_function_name');
function my_function_name() {
  // 実行したい内容
}

add_actionの最初のパラメータは、アクションの名前です。今回の例では、initです。これはWordPressのフックで重要なものであり、初期化する際に実行されます。

2番目のパラメータはコールバックです。実行したい関数の名前を指定します。

無名関数も利用できます。関数名を指定せずにadd_actionの中で関数を実行します。

add_action('init', function() {
  // 実行したい内容
});

無名関数は同じ関数名をつけているか心配する必要がなくなるので、好んで使われます。

あなたが定義したPHPクラスの中でアクションを実行したい場合、コールバックのパラメータとして配列を指定します。配列の1番目の要素にはクラスオブジェクトを、2番目の要素には関数名を指定します。

class MyClass {
	public function __construct() {
		add_action('init', array($this, 'myFunctionName'));
	}
 
	public function myFunctionName() {
		// 実行したい内容
	}
}

フィルターをフックする

フィルターをフックするためには、add_filter()を利用します。

アクションと同様に最初のパラメーターはフィルター名です。そして、2番目はコールバックになります。

さらに3番目に優先度の指定ができ、4番目では引数の数を指定できます。

次にadd_filterの例を示します。

add_filter('the_title', 'my_function_name');
function my_function_name($title) {
  // 実行したい内容
  return $title;
}

この例では、the_titleフィルターにフックして、my_function_name関数を実行するように命令します。

フィルターは変数を変えるために、必ず引数を一つ持ちます。

上記の例では、$titleであり、この変数を操作することで投稿のタイトルを変更することが可能です。

またフィルターでは、必ず何らかの値を返す必要があることを覚えておきましょう。

優先度

add_action及びadd_filterの3番目の引数では、コールバックの優先度を数値で指定できます。

これは同じフックに複数のコールバックがある場合に活用します。

コールバックを行う順番によっては、結果が異なる場合があるからです。

もし優先度を指定しない場合は、10に設定されます。

優先度の数値が低いほど、早く実行されます。ただしマイナスの数値は指定することができません。

もし同じ優先度のコールバックが複数あった場合、WordPressはそれを見つけた順番に実行していきます。

functions.phpでinitアクションフックに次の4つのコールバックを登録します。

add_action('init', 'my_function_name');
add_action('init', 'my_function_name_2');
add_action('init', 'my_function_name_3', 1);
add_action('init', 'my_function_name_4', 100);

実行される順番は次のようになります。

  1. my_function_name_3(優先度1)
  2. my_function_name(優先度10)
  3. my_function_name_2(優先度10:後から読み込まれたコード)
  4. my_function_name_4(優先度100)

引数の数

通常、フックはコールバックに利用するためのいくつかの追加データを提供します。

例えば、save_postは2つの利用可能な引数を提供します。それは投稿IDと投稿オブジェクトです。

もし引数の数が指定していなければ、その数は1になります。

アクションで引数を指定する必要がない場合でも、初期値を利用することが可能です。

add_action('save_post', 'my_function_name', 10, 2);
function my_function_name($post_id, $post) {
  // 実行する内容
}

上記の例では、WordPressは2つの引数をコールバックへ渡します。

先ほど述べたように3番目の引数は優先度です。もし上記の例で引数の数を1に指定すると、コールバックの2番目の引数である$postは未定義となります。

フックを自作する

もしあなたがテーマもしくはプラグイン開発者である場合、フックの導入はコードを変更することなく変えることができるので推奨されることです。

アクションと登録する場合はdo_action()、フィルターを登録する場合はapply_filters()を使います。

do_actionは最低一つのパラメータが必要です。それはアクション名です。

アクションを登録する際の注意点として、アクション名はユニークである必要があります。

アクションはあなたが置きたい場所のどこにでも置くことができます。

例えばテーマの場合、bodyタグの直後にアクションを置くことでスクリプトを出力するために利用ができます。

...
<body>
  <?php do_action('my_after_body'); ?>

またフック名の後にパラメータを置くことができます。

apply_filters()は最低2つのパラメータが必要となります。フィルター名と変更に利用する変数です。

参考:

add_action()
apply_filters()

カテゴリー:WordPress

WordPress初心者の方に読んで欲しい記事

  • あとで後悔しない!WordPress初期設定の基本事項
  • 安全にサイトを運営しよう!WordPressセキュリティ対策の基本マニュアル
Previous Post: « WordPressでスタイル・スクリプトファイルを読み込む方法まとめ(CSS・JavaScript)
Next Post: 「ロリポップ!」検証レビュー|ハイスピードプランは本当におすすめ? »

Primary Sidebar

世界で一番利用されているWordPressテーマ

Divi WordPress Theme
詳しく見る

あなたの悩みは?

WordPress
セキュリティ
WordPress
トラブル
アクセスアップアフィリエイト
おすすめASP

最新ニュース

  • 【カラフルボックス】夏のキャンペーン実施中【2021年8月31日まで】

最近の投稿

  • WordPressのプラグインとは?初心者向けに使い方を解説
  • WordPressでアイキャッチ画像に説明文(キャプション)を追加する方法
  • Conoha WINGレビュー|実際に使ってみた感想
  • エックスサーバーレビュー|ページ表示速度や稼働率を検証してみた
  • 初心者向けにWordPressに最適なレンタルサーバーの選び方を解説

カテゴリー

  • WordPress
  • お役立ち情報
  • アフィリエイト
  • ドメインレジストラ
  • レンタルサーバー
    • ColorfulBox
    • Conoha WING
    • mixhost
    • さくらのレンタルサーバー
    • エックスサーバー
    • エックスフリー
    • ロリポップ!
  • 便利ツール
WordPress学習方法
トップページへ

プライバシーポリシー|お問い合わせ
Copyright © 2022 FOXWP All rights reserved.