web-dev-qa-db-ja.com

プラグインに接続する

私は、ユーザーが different プラグインを通して何かをしたときにできることが理想的にできるようなプラグインに取り組んでいます。

これらのプラグインにカスタムフックを追加することはできますが、プラグインを配布したいときには明らかにうまくいかないでしょう。自分のプラグインから他の人のプラグインにフックを追加する良い方法はありますか?他の開発者が彼らの仕事から構築することができるようにカスタムフックを含めるように作者に依頼する唯一の本当の解決策はありますか?

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

みんなが一緒にNiceをプレイできるように、もっと良いプラグイン開発者になろうとしているだけなのでしょうか。

12
Ryan Elkins

@ライアンエルキンズ:

その答えは、各ユースケースがどのようにあなたにインポートされているかにかかっていると思います。いくつかのケースでは、それはあなたが迅速かつ汚れたものを必要とするものでしょう、他のケースではそれはより重要なユースケースかもしれません。これが思い浮かぶ2つのことです。

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

すばやくて汚い場合は、必要に応じてコアからの他のダウンストリームフック、またはob_start()/ob_end_clean()の使用によるアップストリームおよびダウンストリームフックの両方を使用してください( @Todd Perkins answer to "プラグインコードを介した大きなHTML出力の処理"コード例については。)

フックを追跡するためにあなたは Instrument Hooksプラグインをチェックアウトすることができます 私はあなたが潜在的に使用できるフックを見つけるのを助けるために昨日掲示しました。

プラグイン開発者にあなたの望むフックでパッチを提出してください

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

パッチの作成に慣れていないのであれば、WordPressコアへのパッチ適用に関する良い記事があります。これはプラグインのパッチ適用に最も当てはまりますが、そうでない場合はどうすればよいのか明らかです。

お役に立てれば?

P.Sちょっとがっかりしていて、あなたの質問が対処しているのは、エンドユーザー専用に設計されたプラグインの割合です。つまり、独自のフックがありません。 WordPressがほとんどのプラグインのように設計されていると想像してみてください。それは柔軟性がなく、非常にニッチな解決策になるでしょう。

WordPressが他のプラグインに依存しているプラ​​グインを自動インストールする機能を持っているとしたら、おそらく状況は異なるでしょうか。クライアントはある意味で利用可能なプラグインと利用可能なプラグインを望んでいるので、私は通常私が必要とする多くの機能を最初から書かなければなりませんが、残りの10%を更新する柔軟性はありません。

StackExchangeサイトで良い答えが得られるのと同じように、WordPressコミュニティをリードする人たちがプラグインがベストプラクティス(他の開発者のためのフックを追加することなど)に従うことで得られることを保証する方法を見つけることを本当に願っています。

6
MikeSchinkel

私たちはただ試す必要がありますか そして  to より良いプラグイン開発者になれば、みんなで一緒にNiceをプレイできますか?

手始めに、はい。

他の開発者が彼らの仕事から構築することができるようにカスタムフックを含めるように作者に依頼する唯一の本当の解決策はありますか?

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

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

2
Arlen Beiler

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

明らかに、GoogleがAndroidやIntentシステムで推奨しているのと同じようなシステムについて話しています。アプリケーションが他のアプリケーションの代わりに実行できるアクションを公開し、それをフックしてデータをやり取りすることができます。第四。個人的には、私たちは優れた開発者として進む必要があると思います。WordPressを使用するのは、それを使用するのか、ほとんどの場合同様の自社製品を開発するのかを決定するのに十分なことです。プラグインレポジトリ自体も、ほとんどがエンドユーザ+開発者と同じものです - 完璧なプラグインがあるのに、なぜTwitterプラグインを開発するのか。

「重複を開発する理由」と同じことが、ここでのあなたの質問の核心にあります。 Android Intentシステムを使用すると、アプリケーションは作成済みの機能を利用してそれらの間でデータをやり取りすることができます。これは非常に重視されているため、一般的でよく使用されます。 WordPressにすでに実装されている同様のシステムがありますが、コアコードに存在するフックを超えて使用されることはめったにありません。

カスタムプラグインにフックがもっとあればコミュニティにとって有益ですが、あなたが言うように、いつ、どこにフックを追加するのが簡単な方法はありません。

あなたがフックしたいTwitterプラグインに関しては、作者にEメールを送ってください、私は彼があなたのためにそれらを追加させていただきます。

プラグインにフックを入れるのに適した場所と思われる場所がある場合は、それを実行して文書化してください。より多くの人々がプラグインにフックを入れ始めたり、そうすることへの一般的なプッシュがあるなら、それは結局起こるでしょう。

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

みんなが一緒にNiceをプレイできるように、もっと良いプラグイン開発者になろうとしているだけなのでしょうか。

はい。


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

2
nobody

関数を定義する:

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

add_action('my_footer', 'example_function', 1);#詳細については 私の投稿 を参照してください。

0
bueltge