テーマのカスタマイズでWordPressアクションフックを使用する方法
WordPressの子テーマは、テーマの外観をカスタマイズするための比較的簡単な方法を提供します。テーマのオプションで適切なデザイン選択ができない場合は、子テーマのデフォルトスタイルシートファイルstyle.cssに新しいルールを追加するだけです。しかしまたあなたがしたいときに何が起こるか テーマの機能を変更する? それはWordPressのアクションがあなたの助けになるときの一つです。.
WordPressは、そのカスタマイズ性の高さから、とても人気があります。 WordPress Coreには、開発者がデフォルトの機能を変更または拡張することを可能にするさまざまなフックがロードされています。また、含めることが許可されています カスタムフック 私たちのテーマとプラグインで 他の開発者が自分のコードを自分のニーズに合わせて簡単に調整できるようにする.
WordPressフックについて
あなたがそれらを適切に使用すればあなたが正しい場所であなたが望む魚を捕まえることができるという意味でWordPressフックは現実のフックといくぶん似て働きます.
あなたはできる 捕捉された機能を削除する (例えば、低レベルのユーザーのためにWordPress管理バーを削除することができます)、あなたはすることができます そのままにしておく そして それを強化する あなた自身の機能を使って(例えば、あなたはテーマにもっとメニューやウィジェットの領域を追加することができます)、またはあなたがすることができます それを上書きする (例:コア機能の動作を変更できます).
WordPressには2種類のフックがあります。 行動 そして フィルター. この記事では、私たちができることを見ていきます。 テーマのカスタマイズにアクションフックを利用する.
WordPressフックのしくみ
非常に単純な言語を使用する, 行動 それを示す WordPressページのライフサイクル中に何かが起こった:サイトの特定の部分が読み込まれた、特定のオプションや設定が設定された、プラグインやウィジェットが初期化されたなど.
フィルター とは違う 行動 その性質の中で。彼らは慣れている データを渡す, そして 変更、管理 または 傍受 画面にレンダリングしたり、ユーザーデータをデータベースに保存したりする前に.
WordPressのページライフサイクルのあらゆる重要なランドマークには、次のいずれかがあります。 アクション または フィルタ 我々ができるフック デフォルトの動作を変更するためのカスタムコードを追加します。 私たちのニーズに.
リクエスト中に実行される特定のアクションとフィルタは、どのページがユーザエージェントによってリクエストされたかによって異なります。ではない.
アクションフックを探す
WordPressコーデックスのアクションリファレンスには、さまざまなリクエストを通して実行されるアクションの詳細な概要が記載されています。重要なことは、タスクを達成したいのであれば、 正しい場所に引っ掛ける, その前後のどちらでもない、そうでなければアクションは完了しません.
だから私たちがしたい場合例えば Google Analyticsのコードをサイトに追加する 必要がある フッターが読み込まれる直前にアクションをフックする.
テーマのカスタマイズについて説明すると、アクションフックは2つの異なる場所から来ます。 ワードプレスコア そして テーマそのもの. まったくフックを持たないテーマがありますが、他のものは開発者にいくつかまたは多くを提供します - それは常にテーマ作者の選択です。デフォルトのTwenty Fifteen Themeには、 'twentyfifteen_credits'という名前のフッターカスタマイズ用のアクションフックが1つだけあります。.
ソースコードを閲覧したい場合は、アクションフックも簡単に見つけることができます。アクションフックは、do_action()WordPress関数を使ってコードに追加されます。.
以下のEclipseで行ったように、より高度なコードエディタで式 'do_action'のクイック検索を実行すると、カスタム機能をコアに結び付けることができる場所に関するリストを見ることができます。で検索しました / wp-includes / フォルダを検索することもできます。 / wp-admin / WordPressダッシュボードに関連するアクションフックを含むフォルダー(管理領域).
良いことは、アクションフックの名前は通常は一目瞭然ですが、 通常、コード内に素晴らしいコメント それはあなたがそれを使用したいという理由で与えられたアクションフックが良いかどうかあなたにもっと多くの知識を与えることができます.
例えば、 'widgets_init'アクションフックの前のコードコメントは、 “デフォルトのWordPressウィジェットがすべて登録された後に発生します”. このアクションフックの前にあるコードを覗くと、その前にデフォルトのWPウィジェットの初期化がすべて見つかります。そのため、コメントが間違っていないことを確認できます。独自のカスタムウィジェットを登録する場合は、これは正しい場所になります.
多くの場合、ソースコードはCodexよりもはるかに多くの情報を提供してくれるので、その中を素早くナビゲートする方法を学ぶのは良い考えです。.
自分のアクションを追加する
自分の行動を追加したい場合は、 カスタム関数を作成する そして この関数を特定のアクションフックにバインドする add_action()WordPress関数を使用して。 add_action()関数で追加されたカスタムアクションは通常 その場でトリガー コアが適切なdo_action()関数を呼び出したとき.
簡単な例を見てみましょう.
必要なアクションフックを見つける方法
あなたのサイトにあなたのカスタムファビコンを追加したいとしましょう。まず、自分の機能をバインドできる正しいアクションフックを見つける必要があります。.
考えましょう。普通のHTMLページにfaviconを追加したい場合は、どこに置きますか。もちろん、あなたはそれを内部に配置する必要があります。
次のマークアップを含むHTMLファイルのセクションだから必要なアクションフックは のロードに関連する セクション.
(1) アクションリファレンスを開き、それが何を提供する必要があるかを確認してください。私たちは、アクションを拾い読みしたときに、その名前に基づいて、wp_headという1つしか見つけられないという幸運があります。
セクション.(2) 確かにしましょう WordPress Codexのドキュメントを確認してください。. コーデックスはそれを助言します “関数をブラウザにエコー出力させることでこのフックを使用します”, だから今それは私たちにとって完璧なようです。しかし、それをソースコードでチェックしましょう.
(3) このフックは管理領域とは関係がないので、検索を実行する必要があります。 / wp-includes / フォルダ。 「wp-head」という単語を検索すると、この特定のアクションがWP Coreによって何度も使用されるため、多くの結果が得られます。.
定義されている場所を探す必要があるので、式を検索します。 do_action( 'wp_head'. このアクションにパラメータがあるかどうかはまだわからないので、括弧は終了していません。.
Eclipseは内部で見つかる結果を1つだけ返します。 /wp-includes/general-template.php ファイル。アクションフック定義の前のコメントでは、 “フロントエンドのheadタグにスクリプトまたはデータを印刷します。”, だから今、私たちはそれを完全に確信することができます wp_head 必要なアクションフックです.
パラメータの確認
独自のアクションを追加するときには、使用したいフックがパラメーターを取るかどうかを確認する必要もあります。 do_action()関数を見れば、これを簡単に見つけることができます。.
do_action()関数の構文は次のとおりです。
do_action( 'name_of_action' [、$ parameter1、$ parameter2、…])
アクションの名前のみが必須です。パラメーターはオプションです。 do_action()関数の関連呼び出しに引数が見つかった場合は、次の手順を実行する必要があります。 作成したカスタム関数の宣言にそれらを含める.
見つからない場合は、カスタム関数は引数なしで機能しなければなりません。 wp_headアクションフックのdo_action()定義には、パラメータはありません。.
それをパラメータをとるアクションフックと比較しましょう。 'wp_register_sidebar_widget'というアクションフックは、フックにバインドしたカスタム関数に常に渡す必要がある1つのパラメータを取ります。.
2つの場合のdo_action()構文の違いを見てみましょう。
do_action( 'wp_head'); do_action( 'wp_register_sidebar_widget'、$ widget);
最初のケースではパラメータがないため、カスタム関数は次の構文を使用します。
function my_function_without_parameters()…
2番目のケースでは、カスタム関数の宣言に引数として渡す必要があるパラメータが1つあります。
function my_function_with_parameters($ widget)…
カスタム関数を接続する方法
今、私たちは必要なものすべてを知っています。私たちのサイトにファビコンを表示する私たちのカスタム関数を作成しましょう。.
まず、引数を指定せずに新しい関数を作成してから、add_action()WordPress関数を使用してwp_headアクションフックにバインドします。.
関数custom_add_favicon()echo ''; add_action( 'wp_head'、 'custom_add_favicon');
必要がある 名前を渡す アクションフックの add_action()関数へのリンク 最初の引数として, それならあなたはする必要があります カスタム関数の名前を追加してください.
これらはadd_action()の2つの必須パラメータです。 2つのオプションパラメータもあります, 優先度 そして 受け入れられている議論. これらの使い方を見てみましょう.
優先順位を定義する
多くの場合、同じフックに複数のアクションがバインドされていることがあります。そう どちらが最初に実行されるか? これは私達が使用できるところです $ priorityオプションパラメータ add_action()関数の説明.
優先度を正の整数として追加します。, デフォルト値は10. アクションを早く実行したい場合は低い値を、後で実行したい場合は高い値を指定します。.
そのため、faviconを早期に存在させる必要があると考える場合は、次のようにして前のadd_action()呼び出しを拡張できます。
add_action( 'wp_head'、 'custom_add_favicon'、5);
優先順位は常にでなければならないことに注意してください 他のカスタム関数に対して相対的に設定 同じアクションフックを使う.
受け入れられた引数の数を追加
パラメータを取るアクションフックを使用する場合は、受け入れられる引数の数を追加する必要があります。以前に使用した例を見てみましょう.
アクションフック 'wp_register_sidebar_widget'はパラメータを1つ取ります。そのため、このフックにカスタム関数をバインドするときは、add_action()関数を呼び出すときにこれを引数として含める必要もあります。.
この場合のコードは次のようになります。
function my_sidebar_widget_function($ widget)//あなたのコード add_action( 'wp_register_sidebar_widget'、 'my_sidebar_widget_function'、10、1);
我々はしなければならないことに注意してください 優先度も追加 WordPressが各パラメータの意味を認識していることを確認するために(ここではデフォルトの10を選択しました). 優先順位を省略した場合、WordPressは1が優先順位であると想定できます。 受け入れられた引数の数を示すので、これは正しくありません。.
結論
テーマのカスタマイズでアクションフックを使って多くの実験をすることができます。たとえば、wp_enqueue_scriptsアクションフックを使用してカスタムスクリプト(JS)とスタイル(CSS)を追加したり、wp_footerアクションフックを使用してGoogle Analyticsコードを追加したりできます。.
あなただけではない 自分のアクションを追加する, でもできます 完全な機能を削除する add_action()と同じロジックを使用するremove_action()関数を使用してWordPressコアから.
あなたがテーマの作者であり、あなたが拡張可能なテーマを作りたいのであれば、それは良い考えかもしれません。 適切なテンプレートファイルに独自のカスタムアクションフックを追加する do_action()関数を使って.
あなたがそうしたいのなら, 他の開発者が考えるパラメータについて慎重に考える あなたのテーマを使う人 引数として渡す必要があります カスタム機能を取り入れたいとき.
テーマのカスタムアクションフックの位置を設計する際に、それを忘れないでください。 WordPress Core自身が独自のフックを持っているのと同じ場所にカスタムテーマフックを含めることはあまり意味がありません。.