web-dev-qa-db-fra.com

Se connecter à des plugins

Je travaille sur un plugin qui serait idéalement capable de faire les choses quand un utilisateur fait quelque chose avec un différent plugin.

Je peux ajouter des points d'ancrage personnalisés dans ces plugins, mais évidemment, cela ne fonctionnerait pas bien lorsque je veux distribuer mon plugin. Y a-t-il un bon moyen d'ajouter des points d'ancrage aux plugins d'autres personnes à partir de mon propre plugin? Est-ce la seule vraie solution de demander à l'auteur d'inclure des points d'ancrage personnalisés afin que d'autres développeurs puissent s'appuyer sur leur travail?

Exemple: je veux faire quelque chose dans mon plugin quand quelqu'un retweet un article. S'il existait un point d'ancrage personnalisé dans le plug-in Retweet populaire auquel je pouvais m'attacher, ce serait génial. Donc, je peux modifier leur plugin pour l'inclure, mais cela ne fonctionne que pour ma copie, et je ne veux pas essayer de le redistribuer.

Devons-nous simplement essayer d’être de meilleurs développeurs de plugins pour pouvoir tous jouer à Nice ensemble?

12
Ryan Elkins

@Ryan Elkins:

J'imagine que la réponse dépend de la manière dont chaque cas d'utilisation est importé pour vous. Dans certains cas, il s’agirait là d’une chose dont vous auriez besoin rapidement, dans d’autres, il pourrait s’agir d’un cas d’utilisation plus important. Voici les deux choses qui me viennent à l’esprit:

Rechercher des crochets alternatifs dans WordPress Core

Si c'est quelque chose de rapide et sale parfois, vous pouvez utiliser d'autres hooks en aval du noyau pour modifier ce dont vous avez besoin, ou les deux en amont et en aval via l'utilisation de ob_start()/ob_end_clean() (voir @Todd Perkins answer à "Traiter avec une sortie HTML volumineuse via le code du plugin"pour un exemple de code.)

Pour localiser les hooks, vous pouvez utiliser le plugin Instrument Hooks j’ai posté hier pour vous aider à trouver les hooks que vous pouvez potentiellement utiliser.

Soumettez un correctif avec votre crochet souhaité au développeur du plugin

Si votre cas d'utilisation est plus important pour vous ou la communauté, je vous recommande de continuer et d'ajouter le point d'ancrage nécessaire au plug-in. Ensuite, testez-le bien pour vous assurer qu'il répond réellement à votre cas d'utilisation, après quoi vous pourrez soumettre un correctif au développeur du plug-in dans l'espoir qu'il l'applique. De cette façon, vous leur simplifiez au maximum la tâche en leur donnant du code testé et vous vous retrouvez vous-même à utiliser le cas d'utilisation pour vous assurer qu'il correspond vraiment à vos besoins. Je ne peux pas vous dire combien de fois je pensais qu'il me fallait un certain crochet pour découvrir qu'après avoir essayé de le mettre en œuvre, j'avais besoin d'un crochet, mais qui était différent de celui que j'avais initialement envisagé.

Si vous n'êtes pas familiarisé avec la création d'un correctif, voici un bon article sur l'application de correctifs pour WordPress, qui s'applique le plus souvent aux correctifs de plugins et qui ne le fait pas.

J'espère que cela t'aides?

P.S. Une chose que je trouve un peu décevante et que répond à votre question est le pourcentage de plug-ins conçus uniquement pour les utilisateurs finaux, c’est-à-dire qui n’ont pas de crochets propres. Imaginez si WordPress était conçu comme la plupart des plugins? Ce serait inflexible et une solution très niche.

Peut-être que les choses seraient différentes si WordPress était capable d'auto-installer des plugins sur lesquels d'autres plugins dépendaient? En tant que tel, je dois généralement écrire une grande partie des fonctionnalités dont j'ai besoin, car les clients veulent les choses d'une certaine manière et les plugins disponibles, alors que 90% d'entre eux ne me permettent pas la souplesse nécessaire pour mettre à jour les 10% restants.

Je souhaite vraiment que les leaders de la communauté WordPress identifient un moyen de s'assurer que les plugins sont récompensés pour avoir suivi les meilleures pratiques (telles que l'ajout de points d'ancrage pour les autres développeurs), tout comme les bonnes réponses sont récompensées sur un site StackExchange.

6
MikeSchinkel

Avons-nous juste besoin d'essayer et  pour être de meilleurs développeurs de plugins pour que nous puissions tous jouer à Nice ensemble?

Pour commencer, oui.

Est-ce la seule vraie solution de demander à l'auteur d'inclure des points d'ancrage personnalisés afin que d'autres développeurs puissent s'appuyer sur leur travail?

Ce serait une bonne solution.

Vous pouvez également copier l'autre plug-in et simplement ajouter les modifications, bien que ce soit plus fastidieux.

2
Arlen Beiler

Je pense que vous répondez à votre question dans la question, de sorte que cela devienne un peu rhétorique.

Évidemment, vous parlez d'un système similaire à celui préconisé par Google avec Android et le système Intent, selon lequel une application peut publier des actions qu'elle est capable de réaliser pour le compte d'autres applications, qui peuvent ensuite s'y accrocher et transférer les données en retour. en avant. Personnellement, je pense que c’est quelque chose que nous devons cibler en tant que bons développeurs. Nous utilisons WordPress car il est déjà génial, mais suffisamment génial pour que la décision de l’utiliser ou de développer un produit interne similaire soit facile dans la plupart des cas. Le référentiel de plugins lui-même est encore une fois la même chose, principalement en tant qu'utilisateur final + développeur - pourquoi développer un plugin Twitter alors qu'il y en a un de très bon.

Les mêmes "pourquoi développer des doublons" sont au cœur de votre question. Le système Android Intent permet aux applications d'utiliser les fonctions déjà créées et de transmettre des données entre elles, ce qui est populaire et souvent utilisé car il est poussé à l'extrême. Un système similaire est déjà implémenté dans WordPress, mais il est très rarement utilisé au-delà des crochets présents dans le code principal, qui sont très utilisés.

Cela présenterait des avantages pour la communauté si davantage de points d'ancrage dans les plugins personnalisés étaient présents, mais comme vous le dites, il n'y a pas de moyen facile d'ajouter des points d'ancrage quand et où vous en avez besoin.

En ce qui concerne le plugin Twitter auquel vous souhaitez vous connecter, envoyez un e-mail à l'auteur, je suis sûr qu'il serait ravi de l'ajouter pour vous.

S'il y a un endroit que vous pensez être un bon endroit pour accrocher votre plugin, faites-le, et documentez-le bien. Si davantage de personnes commencent à mettre des points d'ancrage dans les plugins, ou s'il y a une poussée générale en ce sens, cela finira par se produire.

Donc, pour répondre à votre question finale:

Devons-nous simplement essayer d’être de meilleurs développeurs de plugins pour pouvoir tous jouer à Nice ensemble?

Oui.


Edit: J'ai réfléchi davantage à la question et au meilleur moyen d'implémenter les points d'ancrage, ne pourriez-vous pas ajouter une action à exécuter si la fonction que vous essayez d'exécuter du plug-in était présente?

2
nobody

définir une fonction:

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

maintenant vous pouvez accrocher sur ce hook: add_action('my_footer', 'example_function', 1); # plus d'informations voir sur mon post .

0
bueltge