Cómo creamos un soporte completo para los compositores para nuestros complementos premium de WordPress


El compositor es el Addiction Manager elegido para PHP. Le permite declarar una lista de adicciones al proyecto y las instalará y las actualizará directamente desde la línea de comando, similar a NPM para Node. En 2015, Gilbert escribió sobre la gestión de temas y complementos de WordPress usando compositor. Hemos adoptado un enfoque similar para administrar el delicioso cerebro delicioso y, gracias al paquete de WordPress, podemos instalar la mayoría de los complementos que necesitamos a través del compositor. También actualizamos el núcleo de WordPress usando WordPress Composer Fork, lo que significa que el compositor administra el 90% de nuestro sitio ahora.
El enigma del compositor todo esto es bueno y bueno para los complementos gratuitos disponibles en el paquete de WordPress, pero ¿qué pasa con los premium? Durante mucho tiempo, permitimos que nuestros complementos premium se instalen a través del compositor, con una advertencia importante: solo se puede instalar la última versión de cada complemento. Independientemente de la versión que especificó en el archivo composer.json, siempre descargará lo último. Otro problema con el enfoque actual es que su archivo composer.json está relacionado con una clave de licencia (a veces múltiples claves si usa WP Migra DB Pro y WP Descarga S3). En la superficie, puede que no se parezca mucho, pero si recientemente ha trabajado con un desarrollador independiente que ha tenido acceso a su archivo compositor.json y desde entonces se rompió? Ahora tienen su clave de licencia, lo que significa que puedo continuar accediendo al software que ha pagado. ¡No frío!
Aunque la solución ofrecida por nosotros le permitió técnicamente instalar nuestros complementos a través del compositor, fue en la mejor solución de la mitad de los casos. Pero, aún era mejor que la mayoría de las tiendas de complementos premium. La mayoría no acepta el compositor en absoluto. Para aquellos que no lo hacen, tenemos que autenticar en cada sitio para cada complemento, descargar el archivo zip, no me gusta, reemplazar la carpeta con el complemento y enviar los archivos al GIT. No es ideal, pero hace su trabajo. Presentamos un soporte completo para el compositor a partir de hoy, me gustaría anunciar que ahora estamos ofreciendo soporte completo del compositor para nuestros complementos. Esto incluye la posibilidad de instalar versiones anteriores de nuestros complementos utilizando restricciones de versión. Además, desconecté por completo las claves de licencia del archivo composer.json ingresando las claves del compositor API. ¿Recuerdas a ese profesional independiente con el que rompiste? Ahora simplemente puede eliminar la tecla API Composer y no tener acceso a las descargas de su software. Echemos un vistazo al nuevo flujo de trabajo. Usando el compositor, agregué una nueva pestaña de configuración a mi cuenta, donde puede administrar sus claves de compositor API. Se pueden agregar cualquier cantidad de claves. También puedes etiquetarlos para mayor comodidad.
Las claves del compositor API no están conectadas a licencias individuales. Cada clave dará acceso a todos nuestros productos para los que tiene una suscripción activa. Esto incluye cualquier producto futuro que podamos agregar a continuación, por lo que no tiene que regenerarse si compra un nuevo complemento o actualiza una licencia existente. 😉 Una vez que tenga una clave API, puede agregar nuestra fuente de depósito al archivo composer.json, como sigue: “repositorios”: [{“tipo”: “compositor”, “url”: “https: //composer.deliciousBrains .com /{composer_api_key} “}] Puede agregar los paquetes y las restricciones de la versión deseados. Puede usar “*” como versión de paquete para asegurarse de que siempre esté en la última versión de un complemento. {“Requerir”: {“DeliciousBrains-Plug/WP-Migrate-DB-Pro”: “1.8.1”, “DeliciousBrains-Plugin/WP-Mixed-DB-Pro-Media”: “1.4.9”, “DeliciousBrains-Plug/WP-Offload-S3”: “*”}} Instalación de la regla debería ofrecerte verde en todas partes!

Los archivos de complementos se instalan automáticamente en WP-Content/Plugins, pero puede personalizar la ubicación si es necesario. Consulte los documentos DB Migra DB Pro y WP Descargar S3 para obtener más detalles. Mientras lo construí, decidimos agregar soporte completo para el compositor desde mayo de 2017 y creamos un problema de GitHub. Evan fue nuestro experto residente en el compositor, por lo que enfatizó los requisitos del proyecto.
La idea sería imitar el flujo de trabajo con el que los usuarios ya están familiarizados cuando se trata del uso de wpackagist.org, la única diferencia es la clave única agregada a la URL del almacén del compositor.

Poco después, Brad agregó modelos para la interfaz de uso al problema de GitHub, pero decidimos posponer la implementación hasta que se rediseñara el sitio. Esto se debió a los cambios necesarios en mi cuenta, que debería haberse realizado para temas antiguos y nuevos. Entonces, ¿cuáles fueron los requisitos? Paquete.json para el compositor para descubrir el paquete, se requirió un nuevo punto final /packages.json. Elegimos https://composer.deliciousbrains.com/{Composer_pi_keya & Packages.json, pero reescribimos este punto final en Ninx para indicar nuestro api.rewrite existente ^/([a -Za-Z0-9] ++) /+)/ paquetes.json $ /? Wc-API = Delicious-Brains & request = composer_packages & composer_ky = $ 1 Último; Este punto final debe proporcionar una lista de paquetes que nuestro almacén sea responsable, además de cada versión disponible, en el siguiente formato: {“paquetes”: {“proveedor/paquete-name”: {“1.0.0”: { @ composer.json}, “1.0.1”: { @composer.json}, “1.0.2”: { @composer.json}}} Esto nos presentó un problema. Para que podamos generar estos metadatos, tuvimos que conocer cada versión de nuestros complementos que hemos lanzado a lo largo de los años, que no es algo que hemos almacenado en la base de datos. Nuestro tipo de publicación de productos en WordPress solo guarda la versión actual disponible para descargar.
Afortunadamente, almacenamos todas las descargas de nuestros productos en un solo compartimento S3, que incluye todas las versiones lanzadas. También se llaman de manera estandarizada, por ejemplo: WP-MIGRA-DB-PRO-1.0.ZIP. Debido a que ya usamos la descarga de WP S3 en el sitio, podríamos usar el AWS SDK para enumerar objetos y extraer versiones. Hacemos esta búsqueda cada vez que actualizamos un producto en WordPress, pero solo cuando la versión del producto ha cambiado. Estos datos se guardan luego en la tabla de opciones, que a su vez se almacena en caché en Redis. $ Objetos = $ as3cf-> get_s3client ()-> listObjects ([‘bucket’ => downloads.delicious.com ‘,’ prefix ‘=>’ wp ‘,]-> getPath (‘ content/*/key ‘); $ plugins = array (); Foreach ($ objetos como $ objeto) {$ file = self :: get_name_and_version ($ objeto); if (! $ archivo) {continuo; } $ plugins [$ archivo [‘name’] [] = $ file [‘versión’]; } Volver a los paquetes. Esta debe ser la información incluida en el archivo composer.json de cada complemento, sin embargo, no entregamos nuestros complementos con uno. En cambio, generamos esta dinámica para cada paquete.

array (‘name’ => $ name, ‘versión’ => $ versión, ‘type’ => ‘wordpress-plugin’, ‘distin’ => array (‘url’ => self :: get_download_url ($ plugin, $ Versión, $ composer_key), ‘type’ => ‘zip’,), ‘reequire’ => array (‘composer/instaladores’ => ‘~ 1.0’,),); Esto se explica en gran medida por sí mismo. La tecla URL indica otro punto final en nuestra API (ver más abajo) desde donde se puede descargar el paquete ZIP. El tipo y requieren bloques son los que nos permiten especificar la ubicación de instalación para paquetes. Por defecto, se instalarían en /proveedor, pero el uso del compositor /instalador permite que la ubicación predeterminada se convierta en /WP-Contest /Plugins especificando un WordPress-aplug. Desciende el punto final El punto de descarga final es el lugar donde el compositor intenta Descargue el paquete solicitado, una vez que se encontró en nuestros paquetes finales.json. Aquí validamos que el paquete es realmente accesible para la tecla API Composer. Si la clave se adjunta a un usuario que tiene una suscripción activa al paquete solicitado, se iniciará la descarga. De lo contrario, el compositor fallará y se mostrará un error relevante.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *