Я создал несколько плагинов WordPress, которые используют общий класс. Плагины должны работать индивидуально и идеально, если общий класс не установлен как отдельный плагин, но они также могут быть активированы в одной и той же установке. Теперь я могу предотвратить загрузку класса несколько раз, выполнив проверку класса_exists, но я бы хотел больше контролировать, какая версия класса используется, предпочтительно последняя версия. Это связано с тем, что пользователь не обновляет один из плагинов, и это может быть именно эта версия используемого общего класса. Есть ли способ такой проверки?Выбор последней версии класса
Я хочу, чтобы предотвратить это:
- Пользователь устанавливает 2 различных плагинов: WPFoo & WPBar, они оба используют MyClass.
- Пользователь имеет самую последнюю версию WPBar, но WordPress загружает старую версию MyClass, включенную в WPFoo, хотя у него уже есть последняя версия MyClass в WPBar.
- В идеале пользователю не нужно беспокоиться об этом, потому что у него уже есть последняя версия.
Я думал о следующем сценарии:
- Define глобального вар, в котором версия класса будет храниться ($ myclassversion)
- WordPress загружает первое вхождение общего класса & хранит его версия
- WordPress попадает во второе появление общего класса. Перед загрузкой класса выполняется проверка класса_exists, а $ myclassversion сравнивается с этой версией класса. Когда эта версия класса выше, старый класс не установлен, а новый - загружен.
Однако, afaik вы не можете отменить/переопределить класс, просто определяя его снова, правильно?
некоторой дополнительная информация: классов уже разделены на различные файлы. Я думал о том, что просто поименовал класс по-разному для каждого плагина, но в конечном итоге они изменяют один и тот же контент, и он становится беспорядочным, когда они делают это один за другим (каждый немного отличается, если версии отличаются).
Это, по крайней мере, предотвратит использование устаревшей версии, но пользователю не очень понятно, что он/она должен обновить для этого другой плагин.Я мог бы добавить еще один «постоянный PLUGIN =« Этот плагин »и использовать эту переменную в сообщении об ошибке, но я предпочел бы выбрать последнюю версию класса (которая уже будет включена в этот плагин, просто не загружена, потому что более старая плагин будет иметь более высокий приоритет). – Ewout
@Ewout Абсолютно. Даже вы можете перенаправить пользователя на страницу загрузки, содержащую последнюю версию плагина. Поэтому вы должны найти информацию о версии плагина в центральном классе плагина, или вы можете определить ее как глобальную константу, встроенную в ваш источник плагина. – Ihsan