Уся документація, з якою я стикався, обговорює важливу функцію підключення через ваш плагін.
Що робити, якщо замість цього ви займаєтесь розробкою тем?
Моїм функціям.php потрібен інший файл, який перекриває get_user_by()
функцію, визначену в pluggable.php
.
Якщо я пропущу if( function_exists() )
виклик, я отримую помилку "Неможливо змінити ...".
Якщо я включаю if( function exists() )
виклик, то я не отримую помилок, але, звичайно, моя функція потім ігнорується, оскільки версія плагіна існує.
Виходячи з дивовижної публікації Домініка в порядку запуску WordPress , зрозуміло, що pluggable.php
завантажується перед вашою темою functions.php
тощо, так що це пояснює помилку.
Отже, питання полягає в тому, як ви можете скористатися цією приємною архітектурою підключення всередині теми, не вдаючись до написання плагінів, які потім потрібно поєднати або встановити разом з темою?
Подальші зауваження : Отже, здається, що аргумент полягає в тому, що теми не повинні намагатися робити те, що роблять плагіни. Але цьому аргументу більше чотирьох років (згідно 4-значний номер trac). Мені б хотілося почути від важких нападників, чи ця філософія все ще застосовується, враховуючи складну топологію сьогоднішнього ландшафту розвитку теми. Я хотів би повірити, що ми розвинулися відтоді.
Контекст : я розробляю одноразове рішення CMS для клієнта, з великою кількістю індивідуальних метаданих, налаштування зворотного складу адміністратора, процес входу / автентифікації, працює. І звичайно, є компонент дизайну - саме тут і входить тематична частина. Факт полягає в тому, що це просто компоненти , які не використовуються повторно - вони ніколи не застосовуватимуться до іншого клієнта, вони ніколи не будуть розміщені під GPL та відкритими джерелами, і їх найбільше звичайно не поширюватись / встановлюватись на інших розгортаннях WordPress. У кращому випадку є кілька найкращих практик, які я буду використовувати на майбутніх проектах, але це буде суто довідковою справою / копіювати-вставляти завдання.
Це не здається мені випадком використання для плагінів. Тема встановлена, можливо, дочірня тема «Двадцять одинадцять», можливо, окрема, її функції. Тоді у файлах шаблонів тем використовується спеціальні «теги шаблонів», які визначені у входить. Я не хочу мати тематичні файли, що залежать від того, який плагін або інший активується тощо. Це просто не має сенсу будувати складність в системі. Звичайно, я можу помістити його в папку з обов'язковим використанням плагінів, але це все ще відчуває себе злом - саме зараз все, що стосується налаштувань для цього проекту, міститься в wp-content/themes/my-theme/
. Я також не хочу розглянути питання про пошук матеріалів у деяких папках плагінів.
Не зрозумій мене неправильно. Я люблю плагіни і використовую їх і пишу їх. І я використовую плагіни у поєднанні з подібним розвитком високомодифікованої теми, коли плагін є стороннім і представляє кращі практики, що далеко виходять за рамки того, що я міг би розгорнути у розумні часові рамки. Але коли мені потрібно змінити функціональність основної програми для одноразового сценарію, я переходжу до гаків дій, гачків фільтру, і я хотів би мати можливість покладатися на функції, що підключаються, і для користувачів, і для аутентифікації.