Cómo instalar WordPress usando Composer: Guía de instalación paso a paso
Publicado: 2023-02-28Introducción: ¿Por qué Composer se basa en WordPress?
Como cualquier otra aplicación, su sitio de WordPress es más seguro cuando puede garantizar compilaciones repetibles y actualizaciones confirmables para su código y sus dependencias. Su infraestructura se compromete a través de un conjunto de archivos de configuración que especifican qué versión de PHP y MariaDB desea usar. Esta es la mejor manera de garantizar que su proyecto siga siendo reproducible al desarrollar nuevas funciones.
El núcleo de WordPress, además de sus temas y complementos, idealmente debería funcionar de la misma manera, pero a menudo este no es el caso. El panel de administración de WordPress proporciona botones de un solo clic para actualizar todos estos componentes cuando están desactualizados o esperan tener acceso de escritura al sistema de archivos para realizar cambios de configuración en tiempo de ejecución. Sin embargo, desarrollarse de esta manera tiene sus consecuencias.
En primer lugar, no siempre tendrá acceso de escritura al sistema de archivos en tiempo de ejecución. Por lo tanto, depender de este mecanismo para actualizaciones y cambios de configuración está totalmente restringido para muchas soluciones de alojamiento. Por otro lado, si tiene acceso de escritura en el tiempo de ejecución donde está alojando actualmente, la instalación de un nuevo módulo o tema presenta un riesgo de seguridad no trivial (cuando se desconoce la fuente).
Pero, quizás lo más importante, la actualización de WordPress en tiempo de ejecución desvincula el estado de su sitio del código en su repositorio. Un colega que trabaja en una nueva función en su clon local del proyecto podría muy bien ser una versión completa detrás del sitio en vivo. Como resultado de este flujo de trabajo, podría introducir errores con consecuencias desconocidas (y no probadas).
Ventajas de usar Composer
Teniendo en cuenta los hechos anteriores, administrar su sitio de WordPress con Composer tiene claras ventajas. Primero, te permite definir explícitamente tus dependencias en un archivo comprometido (composer.lock). Este archivo de bloqueo se genera a partir de una lista más descriptiva de restricciones de dependencia (composer.json) cuando se instalan las dependencias y se convierte en parte del historial de confirmaciones de su proyecto. A partir de ese momento, cualquier rama nueva funcionará desde la colección idéntica de dependencias hasta el hash de confirmación exacto. En ese momento, no importa quién contribuya al proyecto o incluso dónde se implemente: es el mismo código para todos en todas partes.
Composer también elimina la necesidad de enviar muchos códigos externos a su repositorio. En el caso de WordPress, no usar Composer generalmente requiere que comprometa todo el código de un tema, e incluso para el núcleo de WordPress y los complementos, en su propio proyecto. Además de hacer que el repositorio sea innecesariamente grande y lento para clonar, actualizar estas copias se convierte en un acto de malabarismo con el que nadie tiene que lidiar.
Con Composer, puede agregar y actualizar dependencias a su proyecto y luego bloquear sus versiones exactas para que cada rama nueva obtenga la misma actualización. Si la actualización se hubiera realizado en el sitio implementado en tiempo de ejecución, primero tendría que recordar hacer git pull.
Instalación del núcleo de WordPress con Composer
De la misma manera, usar Composer hace que no sea necesario que confirmes todo WordPress en tu repositorio, ya que puedes agregarlo como una dependencia. Hay varias formas de hacer esto (como Bedrock), según la cantidad de suposiciones que desee hacer para la configuración y la estructura del proyecto. El más simple usa la bifurcación John Bloch Composer para agregar un instalador a sus compilaciones para WordPress:
$ compositor requiere johnpbloch/wordpress-core-installer $ compositor requiere johnpbloch/wordpress-core
El comando anterior creará un archivo composer.json e instalará el núcleo de WordPress en el directorio de WordPress. El composer.json se verá así
{ "requerir": { "johnpbloch/wordpress-core-instalador": "^2.0", "johnpbloch/wordpress-core": "^6.1" }, "configuración": { "permitir complementos": { "johnpbloch/wordpress-core-instalador": verdadero } } }
Tenemos el núcleo de WordPress en la carpeta de WordPress. Pero necesitamos copiar index.php fuera del directorio de WordPress para que podamos apuntar el servidor web al directorio raíz.
Para administrar completamente WordPress con Composer , necesitamos usar un directorio diferente para wp-content en lugar del predeterminado, WordPress/wp-content.
Vamos a crear un nuevo directorio en la raíz del proyecto llamado wp-content.
Una vez copia el index.php de la carpeta de WordPress. Necesitamos cambiar la ubicación del archivo wp-blog-header.php donde se encuentra nuestro directorio de WordPress.
Después del cambio, index.php se verá así
<?php define('WP_USE_THEMES', verdadero); require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );
Necesitamos crear un archivo .htaccess en el directorio raíz con los siguientes contenidos:
# COMENZAR WordPress <IfModule mod_rewrite.c> Motor de reescritura encendido Reescribir Base / Regla de reescritura ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Regla de reescritura. /index.php [L] </IfModule> # FIN WordPress
Avancemos y copiemos el archivo de muestra wp-config.php y luego agreguemos el siguiente código:
$dominio = 'midominio.com; define('WP_SITEURL', "https://{$dominio}/wordpress"); define('WP_HOME',"https://{$dominio}"); $httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $dominio; define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' ); define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' ); /** Ruta absoluta al directorio de WordPress. */ if ( !definido('ABSPATH') ) { define('ABSPATH', dirname(__FILE__) . '/wordpress'); }
Hemos agregado WordPress en ABSPATH ya que el núcleo de WordPress está en /WordPress
Dado que el archivo wp-config.php contiene datos confidenciales; no lo enviaremos a nuestro repositorio creando un archivo .gitignore:
/wp-config.php /wordpress/ /wp-contenido/ /proveedor/
Los directorios de WordPress, wp-content y de proveedores también deben ignorarse para que también los agreguemos al archivo .gitignore.
Nota: debe cambiar el directorio de contenido de wp en caso de que desee agregar una convención de nomenclatura diferente para su contenido de wp.
El directorio raíz de nuestro proyecto debería verse así
.git .gitignore compositor.lock compositor.json proveedor wp-config.php índice.php wordpress
Debe crear una base de datos y cambiar los detalles en wp-config.php. Su sitio web de WordPress se llamará en "mydomain.com" y mydomain.com/wordpress/wp-admin podrá acceder al backend de WordPress.
Agregar complementos y temas desde el repositorio de WordPress
De forma predeterminada, Composer solo buscará en el repositorio packagist.org. Pero no contiene complementos y temas de WordPress.

Para poder extraer complementos y temas de WordPress, debe señalar a Composer en el repositorio wpackagist.org. Para ello, agregue este fragmento de configuración en su archivo composer.json:
"repositorios": [ { "tipo": "compositor", "url": "https://wpackagist.org", "solo": [ "wpackagist-plugin/*", "wpackagist-tema/*" ] } ],
También debemos decirle a Composer dónde colocar complementos y temas. Esto implica agregar un poco más de configuración en composer.json:
"extra": { "rutas de instalación": { "wp-content/mu-plugins/{$nombre}/": [ "tipo: wordpress-muplugin" ], "wp-content/plugins/{$nombre}/": [ "tipo: complemento de wordpress" ], "wp-content/themes/{$nombre}/": [ "tipo: tema de wordpress" ] } }
Con eso en su lugar, ahora puede instalar cualquier complemento o tema de los repositorios oficiales usando el comando composer require, como lo hicimos para instalar WordPress.
# Para instalar un complemento, use este formato:
el compositor requiere "wpackagist-plugin/:"
# Para instalar un tema, use este formato:
el compositor requiere "wpackagist-theme/:"
Las restricciones de versión son complicadas, pero probablemente la forma más sencilla de recordar es usar un comodín *. Para instalar la versión gratuita de nuestro complemento WP Migrate, utilizando la versión 2.x, debe ejecutar:
composer require "wpackagist-plugin/wp-migrate-db:2.*"
Si siempre quiso que sus actualizaciones le dieran la última versión, podría usar un * como restricción de versión:
composer require "wpackagist-plugin/wp-migrate-db:*"
La primera vez que ejecute un comando como este, es posible que se le pregunte si desea "confiar en" compositores/instaladores "para ejecutar el código". Es seguro hacerlo, pero tenga en cuenta que permite que Composer ejecute código en su computadora.
Si todo está bien, debe instalar el complemento (pero no activarlo). También recomendaría enviar sus cambios a Git en este punto.
Adición de complementos y temas personalizados o de terceros
Todo esto está bien si desea complementos y temas del repositorio. Pero, ¿qué sucede si desea agregar complementos de terceros que no están en el repositorio de wordpress.org o en su propio código personalizado? El directorio de WordPress no está en Git, entonces, ¿cómo controla la versión de sus propias cosas?
Algunos autores de temas y complementos admiten repositorios personalizados para sus complementos.
Y algunos temas y complementos no pueden usar ningún repositorio para sus complementos, por ejemplo, complementos pagos.
Pero si eso no se aplica, entonces el truco aquí es dejar de ignorar directorios específicos usando el archivo .gitignore y agregar esos complementos y temas personalizados en composer.json.
También podemos poner esos complementos en otro directorio para instalarlos desde composer.json.
Como estamos ignorando la carpeta de complementos en .gitignore, necesitamos crear otra carpeta llamada dist,
En el dist, podemos tener complementos pagos y personalizados y podemos instalarlos desde el Composer.
- dist/
- complementos/
- temas/
- complementos mu/
Necesitamos copiar nuestros complementos y temas personalizados en la carpeta correspondiente.
Y necesitamos crear composer.json para cada complemento agregado en dist/plugins.
Actualmente, tenemos advanced-custom-fields-pro, que es de pago. También queremos agregar ese complemento a través de Composer para la instalación con un solo clic y automatizar las implementaciones.
Tenemos que descargar ese complemento del portal del sitio web del autor y extraerlo en la carpeta dist/plugins/advanced-custom-fields-pro. Y cree composer.json en la misma carpeta con el siguiente contenido,
{ "nombre": "complementos personalizados/acf-pro", "description": "Campos personalizados avanzados PRO", "versión": "5.12.2", "tipo": "complemento de wordpress", "requerir": { "compositor/instaladores": "^1.0", "johnpbloch/wordpress-core": ">=5.4" } }
Podemos agregar la versión y el nombre con prefijos personalizados aquí. Y agregue algo de código en el archivo raíz composer.json para llamar a este complemento mientras lo instalamos.
En la sección “repositorios”: agregue el siguiente código en el último,
"repositorios": [ { "tipo": "ruta", "url": "dist/complementos/*", "opciones": { "enlace simbólico": falso }
Tienes otras entradas también en la sección de repositorios. Para instalar este complemento, tenemos dos formas, primero para agregar el nombre del complemento con la versión en el
"requerir": { "complementos personalizados/acf-pro": ">=5.12.2" }
O ejecute el siguiente comando, instalará el complemento y agregará la entrada anterior en composer.json.
$ compositor requiere complementos personalizados/acf-pro
De la misma manera, podemos instalar temas y complementos mu.
Para el tema, necesitamos agregar la ubicación de la carpeta del tema,
"repositorios": [ { "tipo": "ruta", "url": "dist/temas/*", "opciones": { "enlace simbólico": falso }
Debe agregar composer.json en su tema personalizado con el nombre y los detalles de la versión. Usando ese nombre, podemos instalar el tema usando el comando composer require.
En conclusión
Usar Composer es el enfoque más efectivo para garantizar que su WordPress permanezca seguro, actualizado y reproducible. Composer permite a los desarrolladores agregar y actualizar fácilmente dependencias en sus proyectos y bloquear sus versiones exactas para garantizar que cada nueva rama funcione con el mismo código.
Con estas ventajas, Composer es una excelente opción para administrar proyectos de WordPress, lo que garantiza compilaciones repetibles y actualizaciones confirmables.
Entendemos que comenzar con Composer puede ser un poco abrumador. Si tiene alguna pregunta, no dude en comunicarse con nosotros. Estamos aquí para ayudarlo a aprovechar al máximo su experiencia con WordPress.
Referencias:
- https://docs.platform.sh/guides/wordpress/composer.html
- https://deliciousbrains.com/almacenando-wordpress-en-git/
- https://time2hack.com/compositor-wordpress-despliegue/