rarst
  • 0
Гуру

Подключаемая функция и проверка активации?

  • 0

Плагин определяет подключаемую wp_mail() функцию. Моя идея заключалась в том, чтобы проверить, определена ли уже функция, и выдать предупреждение, если другой плагин меня опередил.

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

Каким будет надежный/правильный/предлагаемый способ реализации такой проверки подключаемой функции? Нет очевидного (для меня) способа отличить активацию и обрабатывать ее отдельно.

Share
  1. недостаточно ли хороша функция function_exists()?

    • 0
    • @Bainternet при активации pluggables.php уже обработан и wp_mail() всегда существует.

      • 0
    • @Rarst, тогда, наверное, я упускаю суть.

      • 0
    • @Bainternet Дело в том, что порядок загрузки при активации отличается, и я не вижу надежного способа справиться с этим. Я не могу реализовать проверку нужной мне среды, если среда не совпадает из-за другого порядка загрузки.

      • 0
    • @Rarst спасибо за объяснение, тогда я понятия не имею.

      • 0
    • Все тот же подвопрос — как я узнаю, что это активация? Идея проверить на plugins_loaded увольнение может сработать, но еще не проверял. Предупреждение было скорее отладочной вещью. В целом, я больше не думаю, что в моем случае это имеет смысл возиться, но все еще интересуюсь технической стороной.

      • 0
    • Плагин никогда не должен ничего делать, просто будучи включенным. Все должно быть помещено в функцию, которая где-то зацеплена. plugins_loaded не запускается при включении активации, поэтому любые фактические проверки, которые вы хотите выполнить во время «загрузки», должны быть подключены к нему.

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

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

      • 0
  2. Не делать проверку при активации?

    Серьезно, лучший способ, который я могу придумать, это не проверять это при активации, а только в обычном процессе загрузки плагина. И вместо того, чтобы выдавать предупреждение (я предполагаю, что вы имеете в виду PHP E_WARNING), возможно, было бы более разумно поставить окно ошибки администратора.

    • 0

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

You must login to add an answer.