Closed sergey-s-betke closed 10 years ago
Есть одна идея... В подгружаемых файлах не создавать объекты, а определять функцию с предопределённым именем, которая будет возвращать объект.
Либо же определять там класс с предопределённым именем, которое указывать в объекте плагина, и в коде плагина уже создавать экземпляр этого объекта.
В общем - следует хорошо подумать над механизмом подключения admin-side. Безусловно, будет существенно проще, если после объединения они останутся единым объектом, и мы просто подключим дополнительные компоненты. Тогда достаточно действительно определить функцию, экспортирующую коллекцию компонентов, учитывая то, что связывание компонентов и плагина у нас "позднее" - через метод bind
.
Итак варианты:
WPF_Plugin_Part
. Минусы: в любом случае нужно либо явно указывать namespace, либо целиком имя, да и лишний код для определения собственно функции.WPF_Plugin_Part
неявную временную глобальную переменную, её же используем (читаем) в загрузчике, после чего разыменовываем.Третий вариант пока что выглядит наиболее красивым, хотя и нарушает правила хорошего тона.
Корректное условие для загрузки компонентов интерфейса консоли администратора:
if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
Загрузка указанных файлов должна осуществляться "автоматически" в зависимости от того, грузится ли консоль либо грузится frontend.
Основная проблема в том, что необходимо связать объекты собственно плагина, его admin-side / frontend. И здесь пространства имён нам не помогут. Потому как переменные в них не поместить.
С определением необходимого файла (его имени) проблем нет. С корректной подпиской на событий и со своевременной загрузкой этих файлов так же нет проблем. Проблема только в одном на данном этапе: необходимо созданный объект плагина связать с создаваемым объектом frontend или admin-side. Просто для этого использовать переменные, но их нет возможности изолировать в пространстве имён!