Я хотів би отримати деякі думки щодо найкращих практик розробки плагінів WordPress, які забезпечують інтеграцію тем.
Щоб мати сенс, коли я задаю це запитання, дозвольте почати з гіпотетичного прикладу сценарію, який мені цікавий. Уявіть, що я створюю плагін під назвою "Дискографія". Дискографія реєструє три користувацькі типи публікацій: "Групи", "Альбоми" та "Доріжки". Плагін також містить мета-поля, які надають деталі для кожного типу публікації, а також спеціальні таксономії для організації кожного типу публікації. Ці типи публікацій пов’язані разом із плагіном Posts 2 Posts . У межах адміністратора користувач може додавати нові смуги, які можуть бути пов’язані з альбомами, які, в свою чергу, асоціюються з треками, і всі вони матимуть безліч інших даних, доданих до них за допомогою метаполе та систематики.
Тепер я не хочу, щоб цей плагін просто налаштував адміністратора, щоб користувачі могли вводити цю інформацію; Я хотів би, щоб він надав деякі дані за замовчуванням для даних. Більш просунутий користувач / розробник буде добре мати лише цього адміністратора. Їй було б досить легко взяти ці дані та використовувати в темі; однак без деяких переглядів за замовчуванням цей плагін був би марним для більшості користувачів. У цьому прикладі ви можете відобразити що-небудь подібне (в дужках відображається спосіб відображення інформації у порядку ієрархії шаблонів):
- Діапазони (single-prefix-band.php, single.php, index.php, шорт-код)
- Альбоми (single-prefix-album.php, single.php, index.php, шорт-код)
- Доріжки (один префікс-track.php, single.php, index.php, шорт-код)
- Лістинг діапазонів (template-band-list.php, page-band-listing.php, page- {id} .php, page.php, index.php, шорт-код)
- Список альбомів (шаблон-альбом-list.php, сторінка-альбом-listing.php, page- {id} .php, page.php, index.php, короткий код)
- Хронологія альбому (шаблон-альбом-timeline.php, сторінка-альбом-timeline.php, page- {id} .php, page.php, index.php, короткий код)
Важливо, що для цих типів публікацій існує деяка презентація за замовчуванням, оскільки файли шаблонів за замовчуванням не відображатимуть усю інформацію, необхідну для кожного з типів публікацій. Наприклад, тема за двадцять одинадцять за замовчуванням просто відображатиме назву, категорії, опис та дату публікації альбому. Не дуже корисний для альбому. Я хотів би надати єдиний шаблон публікації, який тягне в діапазоні, дату випуску, лейбл альбому, версії альбому, треки тощо. Як розробник плагінів, я відчуваю, що це важливо надати. Я знаю, що шаблон не підходить для кожної теми, але має бути деякий за замовчуванням, який можна додатково інтегрувати з темою користувача.
Знову мені цікаво, який найкращий спосіб вирішити цю ситуацію? Я думаю, ви могли б зробити щось із наступного.
Короткі коди
Шорт-коди можуть бути використані як дуже гнучкий і зручний для користувача спосіб, щоб дозволити нерозробникам додавати групи, альбоми, треки, списки гуртів тощо в будь-якому місці сайту. Було б корисно для показу груп на певних сторінках або створення окремих сторінок для кожного діапазону (не дуже ефективно, але деякі користувачі підходять до речей таким чином). Швидкий код створював би HTML, який би прив’язувався до наданого CSS-файлу, який би забезпечував гарний перегляд потрібних даних за замовчуванням. Все міститиметься у файлах плагінів, і нічого не потрібно робити з темою.
Файли шаблонів
Плагін також може поставлятися з файлами шаблонів. Файли шаблонів можуть бути розмічені та стилізовані для гарного перегляду за замовчуванням. Ви можете надати користувачеві інструкції щодо переміщення файлів у папку з темами, щоб ця тема знайшла правильні шаблони під час перегляду типів публікацій. Ви навіть можете зайти в такий спосіб, щоб забезпечити інтерфейс, щоб дозволити користувачеві переміщувати файли одним натисканням (зауважте: я не створював би файли в папці тем користувача під час активації, оскільки додавання файлів у їхню тему, не ініціюючи їх, це зло) .
Ви також можете використовувати фільтри, щоб використовувати ці файли, не висуваючи їх із папки плагінів, зберігаючи все самодостатнє. Я бачив фільтри "template_include" та "{$ type} _template", які використовуються для цієї мети. Насправді ви можете використовувати шаблони з папки тем, і якщо їх немає, ви можете повернутися до цих фільтрів, щоб забезпечити подання за замовчуванням.
Питання
Мені подобається знати, що найкращі практики для цих ситуацій вважають інші, якщо представлені ідеї будь-яким чином є проблематичними та будь-які альтернативи, які я не включав.
Дякую!