mrwweb
  • 0
Учитель

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

  • 0

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

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

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

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

Share
    • «Является ли единственным реальным решением попросить автора включить пользовательские хуки, чтобы другие разработчики могли использовать их работу?» В большинстве случаев да. Есть определенные ситуации, когда вам удается косвенно подключиться к их плагину, но обычно это не так. Скажите им, чтобы они писали свои плагины так, как если бы они писали для ядра WordPress — добавляйте фильтр/действие везде, где это может понадобиться.

      • 0
    • Подсказка: задокументируйте хуки, которые предоставляет ваш плагин, чтобы другие авторы плагинов могли взаимодействовать с ним.

      • 0
    • Это сработает, но что, если функция другого плагина будет иметь такое же имя?

      • 0
    • К сожалению, может быть, это и не так, потому что вы должны знать, что ретвитят и кем. Проверка функции — это решение во время выполнения, нам нужно решение в реальном времени, которое запускается, когда рассматриваемая функция вызывается или возвращает данные.

      • 0
    • @Arlen — скажем, вы должны были создать свою собственную функцию, которая проверяет, существует ли конкретная функция. Он будет запускаться после «plugins_loaded», и если он есть, он устанавливает логическое значение, которое включает функции. Это сильно зависит от того, не меняется ли код, но я не понимаю, почему это не сработает?

      • 0
    • не => теперь, это собственное => это. Правильный?

      • 0
    • Я понимаю, как добавлять собственные хуки — вопрос в том, как подключить чужой плагин, в идеале таким образом, чтобы не требовалось прямой модификации их плагина.

      • 0
    • @Arlen: большое спасибо, извините за мой плохой английский @Ryan: это невозможно, если у плагина нет крючка; но вы можете проверить замену функции или класса, когда автор попросит об этом в своем плагине. Но можно запросить активные плагины и зацепить ранее в WP как другой плагин и заменить его функцию.

      • 0
  1. @Райан Элкинс:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    да.


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

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

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

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

    • 0

Оставить ответ

You must login to add an answer.