WordPressフック:エッセンシャルガイド
公開: 2021-01-26WordPressフックは、WordPressプラグインとテーマを作成する開発者向けに設計された便利なツールです。 実際、それらは非常に便利なので、WordPressの作成者はWordPressコア全体でそれらを利用します。 しかし、WordPressフックとは正確には何であり、どのように使用しますか?
このガイドでは、WordPressフックを効果的に使用する方法を見て、基本を詳しく説明します。 飛び込みましょう!
WordPressのフックとは何ですか?
一言で言えば、WordPressフックは、WordPressコードの他の部分のスニペットを取得して実行するWordPressコードのスニペットです。 基本的に、開発者はテーマやプラグイン内のさまざまなファイル間を簡単に移動できます。WordPressフックはWordPressコアにパッケージ化されています。 すべてのテーマとプラグインもそれらを利用します。
WordPressフックの説明
WordPressのフックの主な目的は、開発者がWordPressのコアファイルを変更することなく、コンテンツ管理システムの動作方法を根本的に変更できるようにすることです。 WordPressはオープンソースであるため、コアファイルをいじることができますが、99%の確率で数分以内に後悔する可能性があります。
新しい開発者にとって理解するのは少し難しいかもしれませんが、WordPressフックがどのように機能するかを学ぶことは絶対に重要です。 多くの場合、WordPressが使用する用語が原因で混乱が生じます。 舞台裏のアクションは多くのプログラミング言語のアクションと非常に似ていますが、言い回しは異なります。 多くの場合、最初に例をたどり、それらについて読んでから練習することで、これらを作成して使用する方法を学ぶのが最も簡単です。
WordPressフックを作成するには、PHPでコーディングできる必要があります。 PHPは、WordPressの大部分の基盤となる言語です。 フックは、他のPHP関数がラッチできる開口部と考えることができます。 WordPressフックは、ユーザーがデータを表示する前にデータまたは表示に対して何かを行うコールバックと考えることもできます。

2種類のWordPressフック
あなたが学ぶ必要があるWordPressフックの2つの主要なタイプがあります:
- WordPressアクションフック
- WordPressフィルターフック
これら2種類のWordPressフックとその違いを見てみましょう。 また、アクションフックとフィルターフックの両方のいくつかの例を調べて、それらの使用法をわかりやすく説明します。
WordPressアクションフックとフィルターフックの違い
WordPressのコーデックスを確認するのに時間を費やしたことがあるなら、おそらくこれらの用語がさりげなく投げかけられているのを見たことがあるでしょう。 残念ながら、コーデックスの弱点の1つは、開発者自身が作成したものであるということです。 副作用として、彼らには明らかかもしれないいくつかの重要な違いは、WordPressコアコードに精通していない人には明白ではありません。
2種類のWordPressフックを区別する最も簡単な方法は、アクションフックは値を返さないのに対し、フィルターフックは値を返すことです。一般的なプログラミング言語に精通している人にとって、これは、アクションフックには「void」の戻り型があるのに対し、フィルターフックは実際のデータを返すと言っているようなものです。
フィルタフックは、前処理フックまたはイベントと考えることができます。 フィルタフックは、データベースクエリから返された結果をフィルタリングして、「Smith」という名前のエントリのみを含める場合があります。 このフィルターフックは、実際のデータベースクエリが呼び出される前に呼び出す必要があり、WordPressに、関係のない結果を返す前にそれらを取得する必要があることを事前に通知します。
WordPressのアクションフックは、コードを介して何かを取得するものと考えることができます。 アクションフックの一般的な例は、サイトページに追加のCSSファイルを挿入して、外観を変えることです。 フックは、データがユーザーに配信される前に、データの表示方法を変更することを忘れないでください。 アクションフックは、ユーザーエクスペリエンスを向上させる新しいCSSファイルを提供します。 このプロセスには、WordPressのコアの編集は含まれず、サイトのコアWebルートの編集も必要ありません。 このように、WordPressフックを使用すると、プラグインと組み合わせて、複数のWordPressサイトを簡単に管理できます。
フックとフィルターの説明
WordPressのフックとフィルターのより抽象的な概要を見てきたので、これらがどのように機能するかについてのより技術的な詳細に飛び込みましょう。
WordPressフックは、名前で発生するイベントと考えることができます。 WordPressコアに含まれているものの例はsave_postと呼ばれます。 フックの場合、基本的に、 save_postが実行されるときに、フックまたはフィルターをアタッチして、それと一緒に実行する必要があると言います。
いわゆるコールバック、またはコールバック関数をWordPressのフックにアタッチします。 これは、イベントが発生したときに「フック」した関数(上記の例のsave_postなど)に含まれているコードを実行するようにWordPressに要求していることを示すための空想的な方法です。
WordPressフックを追加するのは簡単ですが、後で説明しますが、不適切に記述された1つのコールバックは、コールバックのチェーンを完全に台無しにする可能性があることに注意してください。 これが発生した場合、コールバックのチェーン内の1つの壊れたリンクが、すべてのハードワークを完全に台無しにする可能性があります。 変更を加える前に、必ずバックアップを実行してください。 変更を加える前に、信頼できるWordPressバックアッププラグインを利用してください。
フックがどのように機能するかの背後にあるさらに技術的な詳細に興味がありますか? 次のセクションをチェックしてください! より詳細な説明と、最初のアクションフックと最初のフィルターフックの作成に関するチュートリアルがあります。
WordPressのフックはどのように機能しますか?
いくつかの違いはありますが、WordPressのアクションフックとフィルターフックはほぼ同じように見えることを忘れないでください。 これらのフックがどのように機能するかを簡単に見てみましょう。 この記事の後半で、例とチュートリアルについて説明します。
どちらのタイプのフックも、使用する前にWordPressに登録する必要があります。 これにより、コードを「フック」したイベントが実行されたときにアタッチする関数のリストがCMSに提供されます。 また、アクションがアクションとして登録され、フィルターがフィルターとして登録されていることを確認してください。
アクションを追加するときは、WordPressのコア関数add_action()を利用してください。 フィルタを追加するときは、 add_filter()と呼ばれる対応するWordPressコア関数を使用します。 コールバック(イベントまたはアクションの実行時にチェーンの上位で機能する)がデータを返さない場合は、それをアクションとして登録する必要があります。 WordPressがフィルタリング可能なデータと呼ぶものを返す場合は、それをフィルターとして登録します。
これらの関数で指定したものはすべて、ユーザーがサイトを開いたときに実行されます。 WordPressには、これらすべてのアクションとフィルターをまとめる内部ジェネレーターがあります。 アクションとフィルターに対応する削除機能もあります。 これらを利用して、コールバックチェーンから関数を削除できます。 多くの場合、WordPressPHPの条件文に含まれています。
add関数と同じように、 remove_action()およびremove_filter()と呼ばれます。
WordPressでフックを作成するにはどうすればよいですか?
ついにWordPressで最初のフックを作る時が来ました! フックの作成には、サイトのユーザーに表示およびレンダリングされるカスタムコードの追加が含まれることに注意してください。
カスタムコードを追加するときはいつでも、ある程度のセキュリティリスクが追加されることに注意してください。 そのため、信頼できるWordPressセキュリティプラグインがインストールされ、すぐに使用できるようにするのに、今が理想的な時期です。 これは、新しい脆弱性を導入する可能性のあるカスタムコードを通じて、安心してサイトへの潜在的な脅威を改善するのに役立ちます。
WordPressで非常に単純なアクションフックを作成する方法を見てみましょう。 次に、CMSのフィルターフックの例を見ていきます。
WordPressでアクションフックを作成するにはどうすればよいですか?
アクションの例では、ほぼすべてのWordPress開発者がいつか行う必要があることを実行しましょう。WordPressログインページのコンテンツを調整します。 このページは非常に一般的です。
たとえば、学術機関のWordPressサイトを管理している場合、学生にキャンパスの電子メールアドレスを使用してWordPressポータルにログインするように通知するように求められることがあります。 「ユーザー名」ボックスと「パスワード」ボックスの下に、「 @ myuniversity.eduメールをユーザー名として使用することを忘れないでください」という簡単なリマインダーを追加して、ログインのヘルプを求めるIT部門への電話を減らすことができます。
もちろん、これはフィルターフックではなくアクションフックとより整合します。 これは、メインユーザーのログインページのテキストを編集するなどの単純な調整では、実際にはフィルターにデータが返されないためです。
まず、アクションをフックする場所を正確に把握する必要があります。 ほとんどの場合、コンテンツを追加するPHPファイルを見ると、非常に洞察に満ちたものになります。 ログインコンテンツを含むWordPressファイルを見ると、いくつかのアクショントリガーがあります。 学生に機関の電子メールを使用するように通知する例では、ログインページのPHPファイルに次のコードが非常に興味深いことに気付くでしょう。
do_action( 'login_footer');
do_action関数は、リクエストに応じてアクションフックを実行するWordPressコア関数です。 もちろん、これは、このフックにアタッチするすべての関数を登録した場合に提供されます。
この場合、「login_footer」はWordPressチームによって事前に作成されたフックです。 組み込みですが、独自のコードを添付することもできます。 デフォルトでは、このフックは汎用ログインページのフッターコンテンツをロードします。 フッターはテキストの理想的な場所であるため、このページセクションフックを利用しています。
wp-login.phpに新しいPHP関数を追加して開始できます。 次のように、1行のテキストを出力するだけです。
関数add_uni_email_reminder(){ <p>ユーザー名として@ myuniversity.eduメールを使用することを忘れないでください!</ p> } do_action( 'login_footer'、 'add_uni_email_reminder');
この場合、 wp-login.phpファイルに新しい「アクション」を作成しただけです。 関数のアクションフックの名前(add_uni_email_reminder)は、パラメーターの括弧なしで、do_action()のパラメーターのリストに追加して、フッターが次にレンダリングされるときに実行されるように登録できます。

WordPressでフィルターフックを作成するにはどうすればよいですか?
今、私たちは順調に進んでいます! WordPressフックの基本とその力を活用する方法を学びました。 自分たちで少し変更を加えました! 残っている唯一の主要な部分は、フィルターフックを使って練習することです。 これらは、フィルタリングする可能性のあるある種のデータを返すフックであることを忘れないでください。 これらはアクションフックよりも少し複雑ですが、フックの基本を理解したので、少し簡単になるはずです。
WordPressフィルターフックから始めましょう。 まず、追加する特定のフィルターを決定する必要があります。 クライアントが要求できる項目の1つは、ページ追加機能をカスタマイズすることです。 これは、WordPressユーザーが新しいブログ投稿を追加できる場所です。 できるだけ簡単にするために、「タイトル」テキストボックスに含まれている「ここにタイトルを入力してください」というテキストを編集するとします。 より具体的にして、代わりに「ブログ投稿のタイトルを入力してください」と表示させたいとします。
以下のフィルターフックの例では、関数にパラメーターがあることに注意してください。 さらに、フィルターの実際の実行には、追加の「優先度」パラメーターがあります。 また、フックの登録に使用する実際の関数は、「アクション」の例であるadd_actionとまったく同じであることに気付くでしょう。 この関数がアクションフックではなくフィルターフックであることがわかる方法は、実際に実行されたときに、WordPressコアコードで確認できるように実行される関数はapply_filters( 'enter_title_here'、__( 'ここにタイトルを入力' )、$ post); 。 関数の名前が強く示唆しているように、フィルターを適用しています。
これは、多くの場合、新しいユーザーにとってのつまずきのポイントです。 それは実際にはほんのわずかな言葉遣いの問題です。 それを乗り越えると、WordPressのフックとフィルターの違いを解読するのは非常に簡単になります! それ以上の苦労をせずに、そのプレースホルダーテキストの変更に飛び込みましょう!
関数our_new_title_here($ title){ $ title = __( 'ブログ投稿のタイトルを入力してください'、 'text-domain'); $ titleを返します。 } add_action( 'enter_title_here'、 'our_new_title_here'、10);
add_action関数でその「10」が何を意味するのか疑問に思われるかもしれません。 うまくいけば、最初の2つのパラメーターを理解しているはずです。 1つ目はデフォルトのWordPressフックで、2つ目はenter_title_hereにアタッチする関数とフィルターの名前です。 「10」は、このフィルターに割り当てる優先度のレベルです。
WordPressのアクションとフィルターはどちらも、実行される一連のカスケード「コールバック」またはカスタム関数であることを忘れないでください。 これらには異なる優先度レベルが与えられます。 後で、さまざまな数値の意味、許容可能なパラメーターの意味などについて説明します。 ただし、現時点では、フィルターとアクションのWordPressのデフォルトの「通常の」優先度レベルが10であることを理解することが重要です。
WordPressフックはどこに保存されていますか?
WordPressがこれらすべてのアクションとフィルターをどこに保存できるのか疑問に思われるかもしれません。 WordPressコアを参照しましたが、これは単に組み込みのアクションとフィルター、およびそれらにアタッチされた関数の場所です。 経験豊富なWordPressユーザーは、これらのフックがWordPressのインストール時に作成されたデータベースのいずれにも保存されていないことを知っている可能性があります。
WordPressのアクションとフィルターの最もユニークな機能の1つは、実際にはどこにも「保存」されないことです。 アクションまたはフィルターを追加すると、そのアクションまたはフィルターにWordPressサイト全体でグローバルにアクセスできます。 それがどこにも保存されない可能性のある方法がないと思うなら、あなたは正しいです!
構造はかなり複雑ですが、すべてのアクションとフィルターが格納されているPHP変数が1つあります。 この変数はグローバルであり、 $ wp_filterと呼ばれます。 この変数を直接いじらないでください!
技術的な詳細に興味がある人のために、この変数$ wp_filterはPHP配列です。 WP_HOOKタイプの一連のオブジェクトを多数保持します。 wp-includes / class-wp-hook.phpで読み取ることができるPHPファイル内に、1つの重要なメソッドがあります: this-> apply_filters() 。 このメソッドは、すべてのコールバックを起動し、カスタムフィルターとフックを「登録」するものです。 それは本質的にWordPressフックのパンとバターです。
WordPressのこの素晴らしい機能を十分に活用するには、最も一般的なWordPressフックのいくつかを知る必要があります。 以下のチートシートをご覧ください。
WordPressフックリスト:WordPressフックのチートシート
少しのリアリズムから始めましょう。WordPressのすべてのフックを調べる方法はありません。 ありがたいことに、一部の研究者は、好奇心旺盛な人のために、(文字通り)すべてのアクションとフィルターのリストをまとめました。 ここですべてのWordPressフックの完全なリストを見ることができますが、各フックに関するセキュリティ警告を注意深く見てください。 「非推奨」とラベル付けされているものは使用しないでください。 つまり、最新バージョンのWordPressでサポートされている場合とされていない場合がありますが、いずれにしても、まもなくサポートされなくなります。
おそらく、90%の確率で、いくつかのWordPressフックにしか興味がないでしょう。 WordPressで最も人気のある5つのアクションとフィルター、およびそれらの簡単な説明を以下に示します。
- add_setting() –その名前が示すように、このアクションはWordPress設定に追加されます。 このアクションをユーザー向けページに含めたくない場合もありますが、管理ページを変更する場合は、命の恩人になる可能性があります。
- apply_filters() –これは見覚えがありますか? 以前に使用したので、そうする必要があります。 これにより、フックに関連付けられたコールバックのチェーン全体がすぐに呼び出されます。
- esc_attr() –この名前は「エスケープHTML属性」の省略形です。 HTMLをエスケープするということは、HTMLシンボルにASCIIコードを使用することを意味します。 これは、ページへの「入力をサニタイズ」するためにほぼ普遍的に使用されます。 言い換えると、このアクションは、ユーザーがフォームを送信するときにフックランにアタッチすることが非常に望ましいでしょう。 特にクロスサイトスクリプティング攻撃でユーザーがサイトを攻撃するのを防ぎます。
- the_content() –このフックの名前は、単純に聞こえるかもしれません。 表示されている現在の投稿のコンテンツを取得するだけです。 これは、ユーザーが投稿のコンテンツをエクスポートできるようにする場合に最適です。 たとえば、一部のサイトでは、プレミアムユーザーに任意の記事をPDFファイルとしてエクスポートする機能を提供しています。
- wp_nav_menu() –「WordPressナビゲーションメニュー」の省略形。このフックはアクションフックです。 これは、WordPressサイトを最初に作成したときに作成したメインナビゲーションメニューを表示するために使用されます。 これは、レイアウトが大幅に異なるページがあり、メニューを別の領域に表示したい場合に最適です。
WordPressフックはどのような順序で実行されますか? WordPressフックの発射シーケンス
残念ながら、WordPressフックが実行される正確な順序は、想像するほど明確ではありません。 これは、フックの量が非常に多いためです。 ある研究者は、これを高度に分析して、実行中のフックの数と、WordPressサイトのホームページにアクセスしたときに実行された順序をカウントしました。
これは十分に複雑ではなかったかのように、一部のWordPressフックには、さまざまな優先順位のフックがアタッチされています。 この投稿では、WordPressフックの起動シーケンスについて、実行されている何百ものフックとその順序を確認できます。 注意:この分析は、すべてを失う余裕のあるテストサーバー以外では実行しないでください。
デフォルトのフックの順序については多くのことを行うことはできませんが、指定したフックの順序については何かを行うことができます。 ここでフックの優先順位が出てきます。以前にそれをほのめかしました。
WordPressフックの優先順位はどのように機能しますか?
前述したように、WordPressによってフックに割り当てられるデフォルトの優先度レベルは「10」です。 優先することにした場合は、値が正の整数でなければならないことに注意してください。 これは、残念ながら、「0」は有効な値ではないことを意味します。 また、-100は無効であり、0.5は無効です。 ただし、1111と同様に、1は機能します。
一般に、整数が小さいほど、優先度は低くなります。 たとえば、デフォルト値の10を割り当てたフックの後にフックを実行する場合は、優先度を9にすることができます。最も優先度の低いフックに1を与えることができます。さらに、WordPressフックに同じものを割り当てることができます。優先順位。 これは、それらがどの順序で実行されるかを気にしない場合です。
まとめ:WordPressのフック
新しいWordPress開発者にとって最大の障害の1つは、この情報の多くが標準化されていない可能性があることです。 技術的なブログはたくさんありますが、多くは狭いトピックを扱っており、それらを集約するのは難しい場合があります。
最善の方法は、サイトでWordPressアクションフックとフィルターフックの実験を開始することです。 より複雑なWordPressフックを作成したら、より頻繁に使用する傾向のあるフックを学習する必要があります。 時間が経つにつれて、あなたはこれらのフックを覚えるでしょう。 それは骨の折れるプロセスであり、誰もこれらのフックのすべてを覚えることができません。
WordPressコーデックスは、世界で次にトップのWordPress開発者になるための旅に利用できる唯一の最良のリソースです。
Kristenは、2011年からWordPressユーザーを支援するチュートリアルを作成しています。通常、彼女はiThemesブログの新しい記事に取り組んでいるか、#WPprosperのリソースを開発しています。 仕事以外では、クリステンはジャーナリング(2冊の本を書いています!)、ハイキングやキャンプ、料理、家族との毎日の冒険を楽しんでおり、より現代的な生活を送っています。
