Подключение к плагинам


Я работаю над плагином, который в идеале мог бы делать что-то, когда пользователь делает что-то с помощью другого плагина.

Я могу добавить пользовательские крючки в эти плагины, но, очевидно, это не будет хорошо работать, когда я захочу распространять свой плагин. Есть ли хороший способ добавить крючки к плагинам других людей из моего собственного плагина? Является ли единственным реальным решением попросить автора включить пользовательские крючки, чтобы другие разработчики могли использовать их работать?

Пример: Я хочу что-то сделать в своем плагине, когда кто-то ретвитит статью. Если бы в любом популярном плагине для ретвитов был пользовательский хук, к которому я мог бы подключиться и запустить, это было бы здорово. Его нет, поэтому я могу изменить их плагин, чтобы включить его, но это работает только для моей копии, и я не хочу пытаться распространять это.

Нужно ли нам просто стараться быть лучшими разработчиками плагинов, чтобы мы все могли хорошо играть вместе?

Author: Ryan Elkins, 2010-08-14

4 answers

@Райан Элкинс:

Я думаю, ответ зависит от того, насколько важен для вас каждый вариант использования. В некоторых случаях это будет что-то, что вам нужно быстро и грязно, в других это может быть более важный вариант использования. Вот две вещи, которые приходят на ум:

Ищите альтернативные крючки в ядре WordPress

Если это что-то быстрое и грязное, иногда вы можете использовать другие нижестоящие крючки из ядра, чтобы изменить то, что вам нужно, или как вышестоящие, так и нижестоящие крючки с помощью ob_start()/ob_end_clean() ( смотрите @Ответ Тодда Перкинса на " Работа с большим выводом HTML с помощью кода плагина" для примера кода.)

Чтобы отследить крючки, которые вы могли бы использовать, ознакомьтесь с плагином Инструментальные крючки Я опубликовал вчера, чтобы помочь вам найти крючки, которые вы потенциально можете использовать.

Отправьте патч с нужным крючком Разработчику плагина

Если ваш вариант использования более важен для вас или сообщества, я бы рекомендовал продолжить и добавление крючка, который вам нужен, в плагин. Затем хорошо протестируйте его, чтобы убедиться, что он действительно соответствует вашему варианту использования, после чего вы можете отправить исправление разработчику плагина в надежде, что он или она его применит. Таким образом, вы максимально облегчаете им задачу, предоставляя им проверенный код, и вы сами прорабатываете вариант использования, чтобы убедиться, что это действительно то, что вам нужно. Я не могу сказать вам, как часто я думал, что мне нужен определенный крючок, только чтобы найти его после попытки реализовать, мне нужен был крючок, но один это было совсем не так, как я предполагал вначале.

Если вы не знакомы с созданием патча, вот хорошая статья об исправлении ядра WordPress, для которой большинство относится к исправлению плагинов, а для того, что этого не делает, надеюсь, будет очевидно, что делать:

Надеюсь, это поможет?

P.S. Одна вещь, которую я нахожу немного разочаровывающей и которая касается вашего вопроса, - это процент плагинов, предназначенных только для конечные пользователи, т. е. у которых нет собственных крючков. Представьте, если бы WordPress был разработан как большинство плагинов? Это было бы негибким и очень узкоспециализированным решением.

Может быть, все было бы по-другому, если бы WordPress имел возможность автоматической установки плагинов, от которых зависели другие плагины? Как правило, мне приходится писать большую часть необходимых мне функций с нуля, потому что клиенты хотят, чтобы все было определенным образом, и доступные плагины, в то время как 90 % из них не позволяют мне гибко обновите оставшиеся 10%.

Я действительно желаю, чтобы те, кто возглавляет сообщество WordPress, нашли способ гарантировать, что плагины будут вознаграждены за следование лучшим практикам (таким как добавление крючков для других разработчиков), подобно тому, как хорошие ответы вознаграждаются на сайте StackExchange.

 6
Author: MikeSchinkel, 2017-04-13 12:37:50

Нам просто нужно попробовать и чтобы быть лучшими разработчиками плагинов, чтобы мы все могли хорошо играть вместе?

Для начала, да.

Является ли единственным реальным решением попросить автора включить пользовательские крючки, чтобы другие разработчики могли использовать их работу?

Это было бы хорошим решением.

Вы также можете скопировать другой плагин и просто добавить любые изменения, хотя это было бы более хлопотно.

 2
Author: Arlen Beiler, 2010-08-14 19:37:32

Я думаю, что вы отвечаете на свой вопрос в вопросе, так что он становится несколько риторическим.

Очевидно, вы говорите о системе, аналогичной той, которую Google поощряет в Android и системе намерений, о том, что приложение может публиковать действия, которые оно способно выполнять от имени других приложений, которые затем могут подключаться к ним и передавать данные туда и обратно. Лично я думаю, что это то, к чему нам нужно стремиться как хорошим разработчикам - мы используем WordPress, потому что это уже потрясающе, достаточно потрясающе, чтобы в большинстве случаев довольно легко принять решение о том, использовать его или разработать аналогичный собственный продукт. Сам репозиторий плагинов - это опять то же самое, в основном как конечный пользователь + разработчик - зачем разрабатывать плагин twitter, когда есть совершенно хороший.

То же самое "зачем разрабатывать дубликаты" лежит в основе вашего вопроса здесь. Система Android Intent позволяет приложениям использовать уже созданные функции и передавать данные между ними, и это популярно и часто используется, потому что на это так сильно давят. Аналогичная система уже реализована в WordPress, но очень редко используется за пределами крючков, присутствующих в основном коде, которые используются очень часто.

Сообществу было бы полезно, если бы присутствовало больше крючков в пользовательских плагинах, но, как вы говорите, нет простого способа добавить крючки, когда/где они вам нужны.

Что касается плагина Twitter, к которому вы хотите подключиться, отправьте автору электронное письмо, я уверен, что он буду рад добавить их для вас.

Если есть место, которое, по вашему мнению, было бы хорошим местом для подключения вашего плагина, сделайте это и хорошо задокументируйте. Если все больше людей начнут вставлять крючки в плагины или возникнет общее стремление к этому, в конце концов это произойдет.

Итак, чтобы ответить на ваш последний вопрос:

Нужно ли нам просто стараться быть лучшими разработчиками плагинов, чтобы мы все могли хорошо играть вместе?

Да.


Редактировать: Я еще немного подумал над актуальным вопросом и лучшим способом реализации крючков, не могли бы вы добавить действие, которое выполнялось бы, если бы присутствовала конкретная функция, которую вы пытаетесь запустить в плагине?

 2
Author: nobody, 2010-08-14 19:44:39

Определите функцию:

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

Теперь вы можете зацепиться за этот крючок: add_action('my_footer', 'example_function', 1);# дополнительную информацию смотрите в мой пост.

 0
Author: bueltge, 2010-08-14 21:44:22