Je travaille sur un plugin qui serait idéalement capable de faire des choses lorsqu'un utilisateur fait quelque chose via un autre plugin.
Je peux ajouter des hooks personnalisés dans ces plugins mais évidemment cela ne fonctionnerait pas bien quand je veux distribuer mon plugin. Existe-t-il un bon moyen d'ajouter des crochets aux plugins d'autres personnes à partir de mon propre plugin? La seule vraie solution consiste-t-elle à demander à l'auteur d'inclure des crochets 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 retweete un article. S'il y avait un crochet personnalisé dans le plugin Retweet populaire auquel je pouvais me connecter et tirer, ce serait génial. Il n'y en a pas, 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.
Avons-nous simplement besoin d'être de meilleurs développeurs de plugins pour que nous puissions tous jouer bien ensemble?
Réponses:
@Ryan Elkins:
Je suppose que la réponse dépend de la façon dont vous importez chaque cas d'utilisation. Dans certains cas, ce serait quelque chose dont vous avez besoin rapidement et sale, dans d'autres, ce pourrait être un cas d'utilisation plus important. Voici les deux choses qui me viennent à l'esprit:
Recherchez des crochets alternatifs dans WordPress Core
Si c'est quelque chose de rapide et sale à certains moments, vous pouvez utiliser d'autres hooks en aval du noyau pour modifier ce dont vous avez besoin, ou les hooks en amont et en aval via l'utilisation de
ob_start()
/ob_end_clean()
(voir la réponse de @Todd Perkins à " Traiter les grandes sorties HTML via le code du plugin " pour un exemple de code.)Pour retrouver les crochets que vous pourriez utiliser, consultez le plugin Instrument Hooks que j'ai publié hier pour vous aider à trouver les crochets que vous pouvez potentiellement utiliser.
Soumettez un patch avec votre crochet souhaité au développeur de plugins
Si votre cas d'utilisation est plus important pour vous ou la communauté, je vous recommande d'aller de l'avant et d'ajouter le hook dont vous avez besoin au plugin. Ensuite, testez-le bien pour vous assurer qu'il répond vraiment à votre cas d'utilisation, après quoi vous pouvez soumettre un patch au développeur du plugin dans l'espoir qu'il l'appliquera. De cette façon, vous leur rendez le plus simple possible en leur donnant du code testé et vous travaillez vous-même dans le cas d'utilisation pour vous assurer que c'est vraiment ce dont vous avez besoin. Je ne peux pas vous dire combien de fois je pensais que j'avais besoin d'un certain crochet seulement pour trouver après avoir essayé de l'implémenter j'avais besoin d'un crochet mais qui était différent de ce que j'avais envisagé au départ.
Si vous n'êtes pas familier avec la création d'un correctif, voici un bon article sur le correctif du noyau WordPress pour lequel la plupart s'applique aux correctifs des plugins et pour ce qui ne le fait pas, il est à espérer qu'il sera évident de savoir quoi faire:
J'espère que cela t'aides?
PS Une chose que je trouve un peu décevante et que votre question porte sur le pourcentage de plugins qui sont conçus uniquement pour les utilisateurs finaux, c'est-à-dire qui n'ont pas leurs propres crochets. 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 devait avoir la possibilité d'installer automatiquement des plugins dont dépendaient les autres plugins? En l'état actuel des choses, 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, tandis que 90% ne me permettent pas de mettre à jour les 10% restants.
Je souhaite vraiment que ceux qui dirigent la communauté WordPress identifient un moyen de garantir que les plugins sont récompensés pour les meilleures pratiques suivantes (telles que l'ajout de crochets pour d'autres développeurs), tout comme les bonnes réponses sont récompensées sur un site StackExchange.
la source
Pour commencer, oui.
Ce serait une bonne solution.
Vous pouvez également copier l'autre plug-in et simplement ajouter des modifications, mais ce serait plus compliqué.
la source
Je pense que vous répondez à votre question dans la question, de sorte que cela devienne quelque peu rhétorique.
Évidemment, vous parlez d'un système similaire à celui que Google encourage avec Android et le système Intent, qu'une application peut publier des actions qu'elle est capable de faire au nom d'autres applications, qui peuvent ensuite s'y connecter et transmettre des données et en avant. Personnellement, je pense que c'est quelque chose vers lequel nous devons nous diriger en tant que bons développeurs - nous utilisons WordPress parce qu'il est déjà génial, assez génial pour prendre la décision de l'utiliser ou de développer un produit interne similaire assez facilement dans la plupart des cas. Le référentiel de plugins lui-même est à nouveau la même chose, principalement en tant qu'utilisateur final + développeur - pourquoi développer un plugin Twitter quand il en existe un parfaitement bon.
Le même «pourquoi développer des doublons» est au cœur de votre question ici. Le système Android Intent permet aux applications d'utiliser des fonctions déjà créées et de transmettre des données entre elles, ce qui est populaire et souvent utilisé, car il est tellement sollicité. Il existe un système similaire déjà implémenté dans WordPress, mais est très rarement utilisé au-delà des crochets présents dans le code de base, qui sont beaucoup utilisés.
Il serait avantageux pour la communauté si plus de hooks dans les plugins personnalisés étaient présents, mais comme vous le dites, il n'y a pas de moyen facile d'ajouter des hooks quand / 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 heureux de les ajouter pour vous.
S'il y a un endroit que vous pensez être un bon endroit pour mettre un crochet dans votre plugin, faites-le et documentez-le bien. Si plus de personnes commencent à mettre des hooks dans les plugins, ou s'il y a une pression générale pour le faire, cela arrivera finalement.
Donc, pour répondre à votre dernière question:
Oui.
Edit: J'ai réfléchi davantage à la question réelle et à la meilleure façon d'implémenter les hooks, ne pourriez-vous pas ajouter une action qui s'exécuterait si la fonction particulière que vous essayez d'exécuter du plugin était présente?
la source
définir une fonction:
maintenant vous pouvez accrocher ce crochet:
add_action('my_footer', 'example_function', 1);
# plus d'informations voir sur mon post .la source