フックの作成

カスタムフックを作成するには、アクションにはdo_action()を、フィルターにはapply_filters()を使用します。

ブラウザに出力されるテキストには、[apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)を使用することをお勧めします。特にフロントエンドで。

これにより、プラグインがユーザーのニーズに応じて変更しやすくなります。

フックにコールバックを追加する

カスタムフックにコールバック関数を追加するには、アクションにはadd_action()を、フィルターにはadd_filter()を使用します。

名前の衝突

名前の衝突(「衝突」)は、2人の開発者が全く異なる目的で同じフック名を使用する場合に発生します。これにより、見つけにくいバグが発生します。したがって、フック名の衝突を避けるために、フック名にユニークな文字列をプレフィックスとして付けることが重要です。他のプラグインとの衝突を避けるためです。

たとえば、email_bodyという名前のフィルターは一般的すぎて、2人以上の開発者が異なるプラグインで異なる目的のためにこのフックを使用する可能性があります。したがって、これを避けるためにプレフィックスが追加されます。このハンドブックで例として使用される関数は、wporg_をプレフィックスとして使用しています。

プレフィックスを選択する際には、会社名、wpハンドル、プラグイン名、実際に好きなものを使用できます。目標はユニークにすることなので、賢く選んでください。

拡張可能なアクション:設定フォーム

プラグインが管理パネルに設定フォームを追加する場合、アクションを使用して他のプラグインが独自の設定を追加できるようにすることができます。

  1. do_action( 'wporg_after_settings_page_html' );

これで、別のプラグインがwporg_after_settings_page_htmlフックにコールバック関数を登録し、新しい設定を注入できます:

  1. add_action( 'wporg_after_settings_page_html', 'myprefix_add_settings' );

これはアクションであるため、値は返されないことに注意してください。また、優先順位が指定されていないため、デフォルトの優先順位10で実行されます。

拡張可能なフィルター:カスタム投稿タイプ

この例では、新しい投稿タイプが登録されると、それを定義するパラメータがフィルターを通過するため、別のプラグインが投稿タイプが作成される前にそれらを変更できます。

  1. function wporg_create_post_type() {
  2. $post_type_params = [/* ... */];
  3. register_post_type(
  4. 'post_type_slug',
  5. apply_filters( 'wporg_post_type_params', $post_type_params )
  6. );
  7. }

これで、別のプラグインがwporg_post_type_paramsフックにコールバック関数を登録し、投稿タイプのパラメータを変更できます:

  1. function myprefix_change_post_type_params( $post_type_params ) {
  2. $post_type_params['hierarchical'] = true;
  3. return $post_type_params;
  4. }
  5. add_filter( 'wporg_post_type_params', 'myprefix_change_post_type_params' );

フィルターはデータを受け取り、それを変更して返すことに注意してください。したがって、呼び出されるコード(myprefix_change_post_type_params)は、echoやhtmlなどを使用して画面に直接出力することはありません。また、返された値はregister_post_typeによって最初に変数に割り当てられることなく直接使用されます。この余分な(不必要な)ステップをスキップするのは簡単です。

また、優先順位が指定されていないため、デフォルトの優先順位10で実行されます。そして、期待されるパラメータの数に値がないため、デフォルトの1が仮定されます。