ホームページ > バックエンド開発 > PHPチュートリアル > WordPress でのフックの使用を分析する

WordPress でのフックの使用を分析する

*文
リリース: 2023-03-18 17:08:02
オリジナル
2246 人が閲覧しました

この記事では、WordPress の関数を解析する際のフックの機能と基本的な使い方を主に紹介します。フックは WordPress における関数呼び出しの重要な使い方であり、プラグイン開発の基礎でもあります。お役に立てれば幸いです。

WordPress のプラグイン メカニズムは実際にはこのフックにすぎず、その中国語名はフックに変換され、WordPress コアの実行に参加できるようになります。これについては、以下で詳しく学びましょう。
フックの分類

フックはアクションと呼ばれるフックとフィルターと呼ばれる2種類に分けられます。これら 2 つのフックの実装原理は基本的に同じです。後で説明しますが、使用方法の違いは、フィルターには戻り値がありますが、アクションには戻り値がないことです。

アクションの概念は、メールの送信など、特定の状況または特別な場所でいくつかの機能を実行できるようにすることです。フィルターを使用すると、WordPress コアが使用する必要がある値を変更できます。これらの値を使用して、関数の戻り値などの処理を行います。

アクションフック

wp_headは、テーマの開発中に非常に一般的に使用されるアクションフックです。実際、開発者はwp_headフックを呼び出す関数です。

プラグイン開発者が head タグに文を追加したい場合は、wp_head フックを使用できます。簡単な例を次に示します。


//在 head 标签添加一些内容
function Bing_add_head_tag(){
  echo '添加内容';
}
add_action( 'wp_head', 'Bing_add_head_tag' );
ログイン後にコピー


コードを追加した後、フロントエンド Web ページのソース コードを確認すると、head タグに追加した内容が確認できます。

20151222154540066.png (437×83)

上記は文章を出力しただけの簡単な例です。このフックを使用すると、404 ページに遭遇したときに管理者に電子メールを送信するプラグインを作成することもできます。


//遇到 404 页面给管理员发送邮件
function Bing_404_page_mail(){
  if( !is_404() ) return;//如果不是 404 页面就退出函数
  $to = get_option( 'admin_email' );//获取管理员地址
  $subject = '遇到 404 页面啦!';//邮件标题
  $message = '404 页面的地址:http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];//邮件内容
  wp_mail( $to, $subject, $message );//发送邮件
}
add_action( 'wp_head', 'Bing_404_page_mail' );
ログイン後にコピー


フィルターフック

私の個人的な経験によれば、フィルターフックは、特に PHP に慣れていない人にとっては理解しにくいかもしれません。

フィルター フックを使用すると、フィルター コールバック関数は現在の値であるパラメーターを受け入れることができます。記事のコンテンツを呼び出すために使用される the_content() 関数を思い出してください。この関数は the_content フィルターを提供します。

関数を the_content フックに追加します。この関数は、現在の値であるパラメーターを受け取る必要があります。


//文章内容全部链接新窗口打开
function Bing_autoblank( $content ){//$content 变量就是文章内容,因为其它过滤器也要过滤,所以这个内容可能是经过其它函数过滤的
  $content = str_replace( &#39;<a&#39;, &#39;<a target="_blank"&#39;, $content );//添加 target="_blank"
  return $content;//必须要把过滤后的内容返回回去,否则值就丢了
}
add_filter( &#39;the_content&#39;, &#39;Bing_autoblank&#39; );
ログイン後にコピー


フック原則

実際、add_action() と add_filter() を呼び出すと、$wp_filter グローバル変数に配列要素が追加されるだけで、アクションとフィルタリングについても言及されます。パブリック グローバル変数、つまりフィルターとアクションに同じ名前を付けることはできません。

do_action() が呼び出されると、このアクションに追加された関数が $wp_filter グローバル変数内で検索され、ループ内で実行されます。

apply_filters() には do_action() よりも 1 つ多くのステップがあり、呼び出されるたびにこの関数の戻り値を受け取り、最後に使用するために複数回フィルターされた値を返します。

現在のフックリストを取得する
WordPress のアクションとフィルターはプラグイン メカニズムの中核部分であり、特定の場所で実行する必要があるアクションをアクティブに追加できるようにするため、通常は add_action() 関数と add_filter() 関数を使用します。機能をマウントします。

これらのフックは $wp_filter グローバル変数に保存されているため、フック リストを取得するには、$wp_filter グローバル変数を直接取得できます。


<pre class="brush:php;toolbar:false"><?php var_dump( $GLOBALS[&#39;wp_filter&#39;] ); ?>
ログイン後にコピー


上記のコードはフックリストを出力します。

20151222154645343.png (388×432)

関連する推奨事項:

WordPressで一般的な設定を行う方法

WordPressを使用してWeChatミニプログラムを開発する実践的なチュートリアル

プレスで作成および作成するために使用される単語面を取得する PHP関数のサンプル解説

以上がWordPress でのフックの使用を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート