✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo usar los complementos de WordPress de carga automática de PSR-4

11

Digamos que está trabajando en un proyecto para alguien y lo ha definido, las tareas están delegadas, tiene todas las bibliotecas y herramientas que necesita para comenzar, y ha separado cuál será el tema o la presentación, y cuál será la funcionalidad o los complementos.

Pero en lugar de tener un puñado de complementos individuales, ¿qué pasaría si hubiera un paquete de complementos funcionales más pequeños o micro-complementos o como quiera llamarlos trabajando para potenciar el paquete?

Además, todos estos están construidos sobre la misma base pero que también comparten código entre sí y para hacer las cosas más interesantes, ¿opta por usar un cargador automático PSR-4 a través de Composer para encargarse de todo esto?

Complementos de WordPress de carga automática PSR-4

Primero, la forma de pensar en lo que estoy tratando de decir (porque quién sabe si estoy claro 🙃) es que tienes tu trabajo en el wp-content/pluginsdirectorio. Y su complemento reside, digamos, acme-pluginsy tiene subdirectorios para sus microcomplementos.

Mantendremos esto simple para este ejemplo y diremos que hay un complemento principal y luego solo un microcomplemento. El directorio se vería así;

Cómo usar los complementos de WordPress de carga automática de PSR-4

Ahora, están los archivos que espera ver en un complemento:

  • LÉAME,
  • LICENCIA,
  • REGISTRO DE CAMBIOS,
  • compositor.json
  • compositor.lock
  • vendedor
  • el archivo de arranque del complemento,
  • etc.

Ahora aquí está la cosa: si está usando PSR-2 y va a usar un cargador automático PSR-4, entonces hay dos cosas que necesita saber:

  1. Los espacios de nombres deben coincidir con la organización del directorio. Hablé un poco sobre esto durante mi presentación de WordCamp Atlanta 2017 (específicamente bajo la organización virtual y lógica).
  2. Cómo trabajar con composer.jsonpara definir sus cargadores automáticos. Puedes leer mucho sobre esto aquí, pero daré las notas clave en el resto de esta publicación.

Entonces, el problema es que el vendordirectorio reside un nivel por encima de donde existen algunos de los archivos de origen. Por lo tanto, la forma estándar de configurar un cargador automático personalizado en Composer no funcionará.

Por ejemplo, es muy típico ver esto :

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

Pero para compensar nuestro trabajo, necesitamos hacer esto :

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

Es un cambio simple, pero es un ejemplo simple, ¿verdad? Entonces, ¿cuál es la conclusión de esto?

Tenga en cuenta que hemos actualizado algunos cambios en la  ubicación de carga automática. Específicamente, esto es lo que está pasando:

  • El primer elemento es el espacio de nombres de nivel superior al que pertenecerán todos los complementos que pertenecerán al complemento Acme.
  • La segunda entrada se refiere al MicroPlugin que ve en el directorio de arriba. Esto representa el espacio de nombres para este complemento en particular, y le dice a Composer que busque archivos de origen para cargar automáticamente usando el directorio de propiedades

Desde aquí, agregará una nueva entrada para el cargador automático correspondiente a cada microcomplemento que pertenecerá al complemento de nivel superior.

Organización de futuros microcomplementos

Hay algunas formas en las que puede manejar la organización de su código para que pueda usar un cargador automático predeterminado.

Si sigue el modelo de microcomplemento (a falta de un término mejor), entonces no funcionará, por lo que tendrá que reorganizar sus archivos, y eso puede ser una molestia con el tiempo.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More