私は、親の "container"クラスといくつかのサブクラスとして構成された非常に複雑なプラグインをコーディングしています。各サブクラスはオプションの/必須の要素で、通常は自分自身のadd_submenu_pageにマップします。
基本的には、それを彼のプライベートセットを "サブプラグイン"と呼びましょうというプラグインです。
すべてのサブクラス/サブプラグインには、それぞれ独自の(大きな)add_actionとadd_filterのセットがあります。技術的に言えば、私のプラグインのサブプラグインは有効なWPプラグインです。単にWP自体から直接呼び出されることはありません。
私は計画していたので...実際にはたくさんのadd_action ...プラグインを '非公開の' Observer/Mediatorパターンを使ってリファクタリングするべきかどうか私は思っています。関連するすべてのadd_actionsを私の親クラスのみに収集し、イベントのサブクラスを通知/転送するためのパターンを作成し、私のプラグインがWP event questionに与える影響を軽減します。
それは良い考えですか、それとも絶対に必要ではありませんか?クラスのリファクタリングのためのコードを手伝ってくれる?
事前にtnxの助けを借りて、gabriele
私は私のプラグインを「私用」のObserver/Mediatorパターンを使ってリファクタリングするべきかどうか疑問に思います。関連するすべてのadd_actionsを私の親クラスのみに収集し、イベントのサブクラスを通知/転送するためのパターンを作成し、私のプラグインがWP event questionに与える影響を軽減します。
イベントキューはWPにとって基本的なものなので、かなり高速で、 常に速くなります 。
だから、私はそれがあなた自身のサブキューを作ることに意味があるとは思えない、性能的に賢明ではないと思う。
各add_action()を手動で呼び出す必要がないようにコードをリファクタリングすることは別の問題です。
だから...私は基本的に同じアプローチを取った、それが正しいかどうかわからない。私は多くの人々がこの設定アプローチを使うことから自然に出てくるのでこのアプローチに来ると思います。
ここに: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/class-load-configuration.php
私はこれがほとんどの人によって自動的に行われると思います。モジュール: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/class-module.php は私たちのものに対応します設定APIのためにやる必要がある
ここに: http://plugins.svn.wordpress.org/wp-favicons/trunk/includes/class-init.php
(対応する管理者ページでプラグインが有効になっている場合に有効にする必要があるかどうかをプラグインが確認する場所)(およびabstractとして表すことができます。 http://plugins.svn.wordpress.org/ wp-favicons/trunk/includes/class-plugin.php )
抽象プラグインクラスから派生したプラグイン、またはそのすべて:追加のフィールドの設定、独自の管理ヘルプ画面の定義、独自のフィールドの検証、管理ページのアクションの実行、フィルタなどのクライアント側の機能の実行
プラグインは、Addfilterを介して自分自身を添付します。 http://plugins.svn.wordpress.org/wp-favicons/trunk/plugins/sources/inc/class-module-sources-plugin.php各プラグインに常に存在する「do filter」に対応する なので、複数のプラグインが同じ「do」を再利用する場合は、さらに抽象化することができます。
そしてバックエンドのクラスであなた自身のフィルタにアタッチすることができます。 http://plugins.svn.wordpress.org/wp-favicons/trunk/plugins/request/request_cache.php はプラグインに特定のフィルタを追加します - フィルタを追加
だから反対側から "バックエンドサイト"私は自分自身のフィルタを定義しました。 http://plugins.svn.wordpress.org/wp-favicons/trunk/plugins/metadata_favicon/inc/class-favicon-factory.php 定義「Config :: GetPluginSlug()。 'search'」などのフィルタ
だから一般的に...私は設定APIが自然にこのアプローチに私たちを駆り立てると思う。
それで…それから、あなたは自分自身のアドアクションを「何か他のもの」にリファクタリングしてオブザーバ/メディエータのパターンやその他のものにすることができると考えるようになると思われる点(あなたの質問)に来ます。
しかし、...設定APIを使用してWordPressのアプローチに従ったので(上記のすべてのこと)、これを使用することでサードパーティがアクションを「フックイン」するのを簡単にし、独自のヘルプページ拡張などを書くことができます。デザインの残りの部分もこれに従っているので、コード全体を理解しやすくするために、add_actionを使用してください。
サブプラグイン でプラグインを配布するためのもう1つの良い例はこれ です。