プラグインへのフック


12

私は、ユーザーが別のプラグインを介して何かを実行するときに理想的なことを実行できるプラグインに取り組んでいます。

それらのプラグインにカスタムフックを追加することはできますが、プラグインを配布する場合、これは明らかにうまく機能しません。自分のプラグインから他の人のプラグインにフックを追加する良い方法はありますか?他の開発者が自分の作業から構築できるように、作成者にカスタムフックを含めるよう求める唯一の本当の解決策はありますか?

例:誰かが記事をリツイートしたときにプラグインで何かをしたい。人気のあるリツイートプラグインにカスタムフックがあり、フックして起動できるものであれば、それは素晴らしいことです。存在しないので、プラグインを変更してそれを含めることができますが、それは自分のコピーでのみ機能し、再配布を試みたくありません。

プラグイン開発者をより良くして、全員が一緒にプレイできるようにするだけですか?


1
いい質問です!
MikeSchinkel

「他の開発者が自分の作業から構築できるように、作成者にカスタムフックを含めるよう求める唯一の本当の解決策はありますか?」ほとんどの場合、はい。プラグインに間接的にフックすることができる特定の状況がありますが、通常はそうではありません。WordPressコア用に書いているかのようにプラグインを書くように指示します。必要に応じてフィルター/アクションを含めます。
Viper007Bond

1
ヒント:他のプラグイン作成者がプラグインとやり取りできるように、プラグインが提供するフックを文書化します。
ハクレ

回答:


6

@ライアン・エルキンズ:

答えは、各ユースケースをどのようにインポートするかにかかっていると思います。場合によっては、迅速かつ不潔なものが必要になることもあれば、より重要なユースケースになることもあります。ここに思い浮かぶ2つのことがあります:

WordPress Core内で代替フックを探す

時々手早く汚れている場合は、コアから他のダウンストリームフックを使用して必要なものを変更するか、ob_start()/を使用してアップストリームフックとダウンストリームフックの両方を変更できますob_end_clean()@Todd Perkinsのプラグインコードによる大きなHTML出力の処理」コード例の場合。)

フックを追跡するには、昨日投稿したInstrument Hooksプラグインを使用して、潜在的に使用できるフックを見つけるのに役立てることができます。

プラグイン開発者に目的のフックを備えたパッチを提出する

ユースケースがあなたまたはコミュニティにとってより重要な場合は、プラグインに必要なフックを追加することをお勧めします。次に、それをよくテストして、実際にユースケースに対応していることを確認した後、プラグイン開発者がパッチを適用することを期待して、プラグイン開発者にパッチを提出できるようにします。このように、テスト済みのコードを提供することで、それらを可能な限り簡単にし、ユースケースを自分で操作して、本当に必要なものであることを確認します。フックが必要だったが、最初に想定したものとは異なるものを実装しようとした後、特定のフックが必要だと思った頻度を説明することはできません。

パッチの作成に慣れていない場合は、プラグインのパッチ適用に最も当てはまるWordPressコアのパッチ適用に関する良い記事があります。

お役に立てれば?

PSちょっと残念なことと、あなたの質問の答えは、エンドユーザー専用に設計されたプラグインの割合です。つまり、独自のフックはありません。WordPressがほとんどのプラグインのように設計されていると想像してみてください?それは柔軟性に欠け、非常にニッチなソリューションです。

WordPressが他のプラグインが依存しているプラ​​グインを自動インストールする機能を備えている場合、状況は異なるでしょうか?クライアントは特定の方法と使用可能なプラグインを必要とするため、通常はゼロから必要な多くの機能を作成する必要がありますが、残りの10%を90%更新する柔軟性はありません。

StackPressサイトで良い回答が報われるのと同じように、WordPressコミュニティのリーダーがベストプラクティス(他の開発者へのフックの追加など)に従ってプラグインが報われることを保証する方法を特定してほしいです。


2

私達はちょうどしようとする必要がありますか するので、我々はすべて一緒に遊び素敵にできることを、より良いプラグインの開発者も?

手始めに、はい。

他の開発者が自分の作業から構築できるように、作成者にカスタムフックを含めるよう求める唯一の本当の解決策はありますか?

それは良い解決策でしょう。

他のプラグインをコピーして変更を追加することもできますが、それは面倒です。


2

あなたは質問であなたの質問に答えると思うので、それはやや修辞的になります。

明らかに、GoogleがAndroidやIntentシステムで推奨しているシステムと同様のシステムについて話しているのです。アプリケーションは、他のアプリケーションに代わって実行できるアクションを公開できます。前方へ。個人的には、優秀な開発者として目指すべきものだと思います-WordPressを使用するのは、ほとんどの場合、WordPressを使用するか、同様の社内製品を開発するかを決定するのに十分なほど素晴らしいからです。プラグインリポジトリ自体も、主にエンドユーザー+開発者と同じものです。完全に優れたものがあるのに、なぜtwitterプラグインを開発するのですか。

同じ「なぜ複製を作成するのか」が、ここでのあなたの質問の核心です。Android Intentシステムにより、アプリケーションは既に作成された機能を利用し、それらの間でデータを受け渡すことができます。すでにWordPressに実装されている同様のシステムがありますが、コアコードに存在するフックを超えて使用されることはめったにありません。

カスタムプラグインにさらに多くのフックが存在する場合、コミュニティに利益をもたらしますが、あなたが言うように、いつ/どこでそれらを必要とするかで簡単にフックを追加する方法はありません。

あなたがフックしたいツイッタープラグインに関しては、著者にメールを送ってください。彼は喜んでそれらを追加してくれるでしょう。

プラグインにフックを挿入するのに適した場所と思われる場所がある場合は、それを実行し、適切に文書化します。より多くの人々がプラグインにフックを入れ始めるか、そうすることへの一般的なプッシュがあるならば、それは最終的に起こります。

だからあなたの最後の質問に答えるために:

プラグイン開発者をより良くして、全員が一緒にプレイできるようにするだけですか?

はい。


編集:実際の質問とフックを実装する最良の方法についてもう少し考えましたが、プラグインの実行しようとしている特定の機能が存在する場合に実行されるアクションを追加できませんでしたか?


それは機能しますが、別のプラグインの関数が同じ名前だったらどうでしょうか?
アーレンベイラー

何が誰によってリツイートされているのかを知る必要があるので、そうではないかもしれません。関数の確認は実行時の解決策であり、必要なのはリアルタイムの解決策であり、問​​題の機能が呼び出されるかデータを返すときに実行されるものです。
アーレンベイラー

@Arlen-特定の関数が存在するかどうかをチェックする独自の関数を作成するとします。'plugins_loaded'の後に実行され、存在する場合は、機能を有効にするブール値を設定します。変更されないコードに大きく依存していますが、なぜ機能しないのかわかりませんか?
誰も

0

関数を定義する:

function my_footer() {
    do_action('my_footer');
}

今、あなたはこのフックにフックすることができます:add_action('my_footer', 'example_function', 1);#詳細は私の投稿を参照しください。


ではない=>今、これ自身=>これ。正しい?
アーレンベイラー

カスタムフックを追加する方法を理解しています。質問は、他の人のプラグインをフックする方法です。理想的には、プラグインを直接変更する必要はありません。
ライアンエルキンス

@アーレン:多くのおかげで、私の悪い英語@Ryanでごめんなさい:プラグインにフックを持っていない場合、それは不可能です。作成者がプラグインでこれを要求したときに、関数またはクラスの置換を確認できます。ただし、アクティブなプラグインを要求し、WPで他のプラグインとしてフックし、その機能を置き換えることができます。
-bueltge
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.