April 4, 2019

Integrar composer en un plugin de WordPress

Integrar «composer» en un plugin de WordPress, NO tiene nada que ver con «Visual Composer»… 🙂 se trata de hacer uso de un fantástico gestor de dependencias ( librerías ) de PHP llamado COMPOSER

composer

De modo similar a cuando quieres añadir funcionalidades a WordPress haces uso de los plugins, en la programación con PHP existe este gestor de dependencias para añadir a tus desarrollos librerías de terceros.


Trabajar con COMPOSER

Para poder trabajar con este gestor de dependencias PHP es necesario que tengas instalado COMPOSER en tu equipo, tras lo cual ya podrás lanzar los comandos correspondientes desde terminal.

Para proceder a su instalación local tienes el siguiente enlace con toda la informacion: instalar composer.


Gestor de dependencias PHP

Es un gestor de dependecias porque tu sólo tienes que indicar en un fichero composer.json los paquetes/librerias que necesitas integrar y COMPOSER se encarga el solito de descargarlas y guardarlas en tu proyecto en la carpeta VENDOR.

Pero no solo eso, también se encarga de descargar las dependencias indirectas y la versión correcta de todas las dependencias que haya en cadena, ya que una libreria que tratas como depedencia para tu proyecto tiene a su vez sus propias dependencias internas y así sucesivamente… 🙂

El citado fichero composer.json que indica qué instalar, lo verás en muchos plugins y es algo que puedes crear con el comando composer init teniendo el siguiente aspecto extraido del plugin SumaPress Boilerplate OOP:

{
  "name": "sumapress-boilerplate/sumapress-boilerplate-oop",
  "description": "Custom SumaPress Boilerplate base on OOP",
  "license": "GPL-2.0-or-later",
  "authors": [
    {
      "name": "SumaPress",
      "email": "info@sumapress.com",
      "homepage": "https://sumapress.com/",
      "role": "Developer"
    }
  ],
  "keywords": ["wordpress", "plugin", "framework", "boilerplate", "oop"],
  "homepage": "https://sumapress.com/plugin/sumapress-boilerplate-oop/",
  "type": "wordpress-plugin",
  "require": {
    "php": ">5.3.0"
  },
  "autoload": {
    "psr-4": {
      "SumaPress\\OOP\\": ""
    }
  },
  "suggest": {
    "composer/installers": "~1.0"
  },
  "require-dev": {
    "phpunit/phpunit": "^6",
    "rpkamp/fancy-testdox-printer": "^0.2.5",
    "squizlabs/php_codesniffer": "3.*",
    "wp-coding-standards/wpcs": "*"
  },
  "scripts": {
    "pot": "wp i18n make-pot . languages/sumapress-boilerplate-oop.pot",
    "test": "phpunit --colors=always --printer \"rpkamp\\FancyTestdoxPrinter\"",
    "setup": [
      "phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs",
      "phpcs --config-set default_standard WordPress"
    ],
    "error": "phpcs --extensions=php",
    "fix": "phpcbf --extensions=php"
  }
}

Aunque puede ser algo tan simple como el que puedes ver en el plugin Development Helper de SumaPress en el que sólo se indican las 2 librerias que se quieren usar e integrar en el plugin:

{
  "require": {
    "kint-php/kint": "^3.1",
    "filp/whoops": "^2.3"
  }
}

Una vez situado este fichero el la raiz de tu proyecto, para que aparezca la citada carpeta VENDOR con todo instalado en su interior sólo tienes que usar el comando composer install y cuando quieras actualizar simplemente composer update

Esta carpeta citada la puedes borrar en cualquier momento, y es algo que no se suele incluir en los «commits de git» ya que la puedes crear en cualquier momento con solo usar composer install


Instalar librerias PHP

Aunque no tengas creado el citado fichero que indica qué tiene que instalar composer al lanzar el correspondiente comando, es algo que puedes hacer de una sola vez, tanto crear el fichero composer.json como lanzar la instalación, con sólo indicar qué librerias quieres integrar.

Por ejemplo si quieres integrar e instalar la libreria Kint – debugging helper for PHP developers puedes hacer uso de composer y simplemente lanzar el comando composer require kint-php/kint --dev

Tras lanzar ese comando se crea el fichero composer.json ya comentado, se ejecuta toda la instalación en la carpeta vendor y también se crea un fichero composer.lock en el que se indica concretamente las versiones instaladas (algo util para trabajar en equipo y fijar las versiones usadas en un proyecto).


Integrar la carpeta vendor en el plugin WordPress

Para hacer uso en nuestro plugin de WordPress de las librerias instaladas con composer y guardadas en la carpeta vendor, únicamente tenemos que preocuparnos de incluir el «autoloader» que se situa dentro de la carpeta vendor y el cual ya se encarga de incluir todas las dependencias.

/**
 * Require composer dependencies: Kint & Whoops
 */
require_once 'vendor/autoload.php';

En definitiva, solo tenemos que incluir el fichero autoload.php que crea composer dentro de la carpeta vendor ya que este ya se encarga de incluir por sí solo todas las dependencias establecidas en cada momento.

Por tanto, con solo la citada línea de código que hace incluir el fichero autoload.php dentro de tu plugin ya estás integrando todas las librerias PHP que quieras ya que ese fichero se encarga de todo. 🙂

Puedes ver el ejemplo presentado en este artículo dentro del plugin Development Helper de SumaPress.

Si te ha gustado... ¡Compártelo!