it-swarm.xyz

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

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

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

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

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

12
Ryan Elkins

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

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

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

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

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

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

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

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

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

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

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

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

6
MikeSchinkel

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

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

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

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

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

2
Arlen Beiler

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

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

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

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

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

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

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

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

Да.


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

2
nobody

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

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

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

0
bueltge