ホームページ >CMS チュートリアル >&#&プレス >WordPressでイベントをトリガーする代替方法

WordPressでイベントをトリガーする代替方法

Christopher Nolan
Christopher Nolanオリジナル
2025-02-15 11:12:12405ブラウズ

Alternative Ways of Triggering Events in WordPress

WordPressイベントのトリガーメカニズムの詳細な説明:高度なヒントとベストプラクティス

この記事は、WordPress Hook Systemの基本的な知識の以前の紹介に従っているWordPress Hook Systemシリーズのチュートリアルの2番目の部分であり、静的と非静的な方法を調べる方法を調査します。アクションとフィルターを備えたクラスメソッド。

キーポイント:

  • do_action_ref_array()および関数は、アレイを使用してパラメーターを渡し、多数のパラメーターを処理する際のより効率的なWordPressイベントをトリガーする代替案を提供します。 apply_filters_ref_array()
  • WordPressを使用すると、アクションとフィルターにクラスメソッド(静的および非静的)をフックすることができます。静的メソッドは、クラス名または
  • の代わりに__CLASS__定数を使用します。 $this イベントエスプレッソ、イベントカレンダー、イベントオーガナイザーなど、コードを作成せずにWordPressプラグインを介してトリガーされたイベント。これらのプラグインは、Facebook、Googleカレンダー、EventBriteなどのプラットフォームとの統合もサポートしています。
高度なイベントトリガーメソッド

前の記事では、WordPressは一般に

および

関数を使用してイベントをトリガーし、do_actions()apply_filters()を介してそれらを購読します。しかし、他の方法はあります:アクションフックの場合、フィルターフックの場合。 add_action() add_filter()これら2つの関数の関数の関数は同じです。違いはパラメーター通過方法です。 do_action_ref_array()およびapply_filters_ref_array()はパラメーターを直接渡しますが、

および

を使用してパラメーターを渡すために配列を使用します。これらは、多くのパラメーターがある場合により明確で読みやすいです。 do_action() apply_filters()do_action_ref_array()コードの例apply_filters_ref_array()

次の例では、がどのように使用されるかを示しています。

do_action_ref_array()例:apply_filters_ref_array()

WordPressがユーザープロファイルを更新する前に、アクションがトリガーされます。次のコードでは、カスタムフィールド「都市」が空であることを確認します:

do_action_ref_array()

例:

user_profile_update_errors

次のコードは、bbpressの
<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>
フィルターのリダイレクトURLを変更します。

apply_filters_ref_array()いつおよび

を使用するか bp_activity_permalink_redirect_urlプラグインまたはテーマを開発する場合、

および
<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

およびよりも優れており、多数のパラメーターが必要な場合にコードがよりシンプルで読みやすくなります。 do_action_ref_array() apply_filters_ref_array()アクションとフィルターへのクラスメソッドをフック

前の例は、アクションとフィルターに名前が付けられた関数と匿名の機能をフックする方法を示しています。以下は、WordPressアクションとフィルターにクラスメソッド(静的および非静的)をフックする方法について説明します。

コンストラクターにフックを追加:

ほとんどのWordPress開発者は、クラスのコンストラクターにすべてのadd_action()およびadd_filter()コールを追加します:

<code class="language-php">add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );</code>

静的メソッドの場合、__CLASS__$thisの代わりにクラス名または

定数を使用します
<code class="language-php">add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );</code>

静的初期化方法:

を使用します

もう1つの方法は、すべてのフックを初期化する静的メソッドを作成することです。

<code class="language-php">class DemoPlugin {
    public function __construct() {
        add_action( 'wp_head', array( $this, 'google_site_verification' ) );
        add_filter( 'the_content', array( $this, 'we_love_sitepoint' ) );
    }
    // ... 方法定义 ...
}
new DemoPlugin();</code>

概要 この記事では、WordPressイベントのトリガーとアクションとフィルターにクラスメソッドをフックする方法の代替案について説明します。その後の記事は、より高度な使用と予防策を引き続き検討します。

Alternative Ways of Triggering Events in WordPress

faq

(FAQパーツはここで省略されています。なぜなら、元のFAQパーツの内容は記事のトピックに弱く関連しており、長くなっているため、必要に応じて自分で補足または変更できるからです。

以上がWordPressでイベントをトリガーする代替方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。