✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как использовать плагины WordPress с автозагрузкой PSR-4

52

Скажем, вы работаете над проектом для кого-то, и вы его определили, задачи делегированы, у вас есть все библиотеки и инструменты, необходимые для начала работы, и вы определили, что будет темой или презентацией, и какой будет функционал или плагины.

Но вместо того, чтобы иметь несколько отдельных плагинов, что, если бы был пакет небольших функциональных плагинов или микро-плагинов, или как бы вы их ни называли, работающих на пакет?

Кроме того, все они построены на одном и том же фундаменте, но имеют общий код друг с другом, и, чтобы сделать вещи более интересными, вы решили использовать автозагрузчик PSR-4 через Composer, чтобы позаботиться обо всем этом?

PSR-4 Автозагрузка плагинов WordPress

Во-первых, способ думать о том, что я пытаюсь сказать (потому что кто знает, ясно ли я понимаю 🙃), состоит в том, что ваша работа находится в wp-content/pluginsкаталоге. И ваш плагин находится, скажем, acme-pluginsи имеет подкаталоги для ваших микро-плагинов.

Мы не будем усложнять этот пример и скажем, что есть основной плагин и только один микро-плагин. Каталог будет выглядеть примерно так;

Как использовать плагины WordPress с автозагрузкой PSR-4

Теперь есть файлы, которые вы ожидаете увидеть в плагине:

  • ПРОЧТИ МЕНЯ,
  • ЛИЦЕНЗИЯ,
  • ИЗМЕНЕНИЙ,
  • композитор.json
  • композитор.lock
  • продавец
  • загрузочный файл плагина,
  • и т.п.

Теперь вот в чем дело: если вы используете PSR-2 и собираетесь использовать автозагрузчик PSR-4, вам нужно знать две вещи:

  1. Пространства имен должны соответствовать организации каталога. Я немного говорил об этом во время своей презентации WordCamp Atlanta 2017 (в частности, о виртуальной и логической организации).
  2. Как работать с composer.jsonопределением ваших автозагрузчиков. Вы можете много прочитать об этом здесь, но я дам основные заметки в оставшейся части этого поста.

Таким образом, проблема в том, что vendorкаталог находится на уровне выше, где существуют некоторые исходные файлы. Таким образом, стандартный способ настройки собственного автозагрузчика в Composer не сработает.

Например, очень характерно видеть это :

{
  "name": "pressware/acme-plugins",
  "description": "A demo plugin",
  "autoload": {
    "psr-4": {
      "Acme": "src/",
    }
  },
  // ...
}

Но чтобы компенсировать нашу работу, нам нужно сделать это :

{
  "name": "pressware/acme-plugins",
  "description": "A demo plugin",
  "autoload": {
    "psr-4": {
      "Acme": "",
      "AcmeMicroPlugin": "MicroPlugin/src/"
    }
  },
  // ...
}

Это простое изменение, но это же простой пример, верно? Итак, какой вывод из этого?

Обратите внимание, что мы обновили некоторые изменения в расположении автозагрузки. В частности, вот что происходит:

  • Первый элемент — это пространство имен верхнего уровня, к которому будут принадлежать все подключаемые модули, которые будут принадлежать подключаемому модулю Acme.
  • Вторая запись относится к MicroPlugin, который вы видите в каталоге, показанном выше. Это представляет собой пространство имен для этого конкретного плагина и указывает Composer искать исходные файлы для автоматической загрузки с использованием каталога свойств.

Отсюда вы добавите новую запись для автозагрузчика, соответствующую каждому микро-плагину, который будет принадлежать плагину верхнего уровня.

Организация будущих микроплагинов

Есть несколько способов организации кода, позволяющих использовать автозагрузчик по умолчанию.

Если вы будете следовать модели микро-плагинов (из-за отсутствия лучшего термина), то она не будет работать, поэтому вам придется реорганизовать свои файлы, и со временем это может стать проблемой.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее