ホームページ >CMS チュートリアル >&#&プレス >WordPressでイベントをトリガーする代替方法
WordPressイベントのトリガーメカニズムの詳細な説明:高度なヒントとベストプラクティス
この記事は、WordPress Hook Systemの基本的な知識の以前の紹介に従っているWordPress Hook Systemシリーズのチュートリアルの2番目の部分であり、静的と非静的な方法を調べる方法を調査します。アクションとフィルターを備えたクラスメソッド。
キーポイント:
do_action_ref_array()
およびapply_filters_ref_array()
__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()
do_action_ref_array()
user_profile_update_errors
<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イベントのトリガーとアクションとフィルターにクラスメソッドをフックする方法の代替案について説明します。その後の記事は、より高度な使用と予防策を引き続き検討します。
(FAQパーツはここで省略されています。なぜなら、元のFAQパーツの内容は記事のトピックに弱く関連しており、長くなっているため、必要に応じて自分で補足または変更できるからです。
以上がWordPressでイベントをトリガーする代替方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。