Come installare WordPress usando Composer: guida all'installazione passo dopo passo
Pubblicato: 2023-02-28Introduzione: Perché Composer si basa su WordPress?
Come qualsiasi altra applicazione, il tuo sito WordPress è più sicuro quando puoi garantire build ripetibili e aggiornamenti eseguibili per il tuo codice e le sue dipendenze. La tua infrastruttura viene impegnata attraverso una serie di file di configurazione che specificano quale versione di PHP e MariaDB desideri utilizzare. Questo è il modo migliore per garantire che il tuo progetto rimanga riproducibile durante lo sviluppo di nuove funzionalità.
Il core di WordPress, oltre ai suoi temi e plugin, dovrebbe idealmente funzionare allo stesso modo, ma spesso non è così. Il pannello di amministrazione di WordPress fornisce pulsanti con un clic per aggiornare tutti questi componenti quando non sono aggiornati o altrimenti si prevede di accedere in scrittura al file system per apportare modifiche alla configurazione in fase di esecuzione. Tuttavia, lo sviluppo in questo modo ha le sue conseguenze.
Innanzitutto, non avrai sempre accesso in scrittura al file system in fase di esecuzione. Quindi, a seconda di questo meccanismo per gli aggiornamenti e le modifiche alla configurazione è totalmente limitato per molte soluzioni di hosting. D'altra parte, se disponi dell'accesso in scrittura in fase di esecuzione in cui stai attualmente ospitando, l'installazione di un nuovo modulo o tema presenta un rischio per la sicurezza non banale (quando la fonte è sconosciuta).
Ma, forse la cosa più importante, l'aggiornamento di WordPress in fase di esecuzione disaccoppia lo stato del tuo sito dal codice nel tuo repository. Un collega che lavora su una nuova funzionalità sul proprio clone locale del progetto potrebbe benissimo essere una versione completa dietro il sito live. Come risultato di questo flusso di lavoro, potresti introdurre bug con conseguenze sconosciute (e non testate).
Vantaggi dell'utilizzo di Composer
Dati i fatti di cui sopra, la gestione del tuo sito WordPress con Composer presenta evidenti vantaggi. Innanzitutto, ti consente di definire esplicitamente le tue dipendenze in un file di cui è stato eseguito il commit (composer.lock). Questo file di blocco viene generato da un elenco più descrittivo di vincoli di dipendenza (composer.json) quando le dipendenze vengono installate e diventa parte della cronologia di commit del progetto. Da quel momento in poi, qualsiasi nuovo ramo funzionerà dall'identica raccolta di dipendenze fino all'esatto hash di commit. A quel punto, non importa chi contribuisce al progetto o anche dove viene distribuito: è lo stesso codice per tutti ovunque.
Il Composer elimina anche la necessità di impegnare molto codice esterno nel tuo repository. Nel caso di WordPress, non utilizzare il Composer di solito richiede di impegnare tutto il codice per un tema, e anche per il core di WordPress e i plugin stessi, per il proprio progetto. Oltre a rendere il repository inutilmente grande e lento da clonare, l'aggiornamento di queste copie diventa un atto di destrezza che nessuno deve affrontare.
Con Composer, puoi aggiungere e aggiornare le dipendenze al tuo progetto e quindi bloccare le loro versioni esatte in modo che ogni nuovo ramo riceva lo stesso aggiornamento. Se l'aggiornamento fosse stato eseguito sul sito distribuito in fase di esecuzione, dovresti ricordarti di eseguire prima git pull.
Installazione del core di WordPress con Composer
Allo stesso modo, l'utilizzo di Composer rende superfluo il commit di tutto WordPress nel repository poiché è possibile aggiungerlo come dipendenza. Esistono diversi modi per farlo (come Bedrock), a seconda di quante ipotesi si desidera formulare per la configurazione e la struttura del progetto. Il più semplice utilizza il fork di John Bloch Composer per aggiungere un programma di installazione alle tue build per WordPress:
$ composer richiede johnpbloch/wordpress-core-installer $ compositore richiede johnpbloch/wordpress-core
Il comando precedente creerà un file composer.json e installerà il core di WordPress nella directory di WordPress. Il composer.json avrà questo aspetto
{ "richiedere": { "johnpbloch/wordpress-core-installer": "^2.0", "johnpbloch/wordpress-core": "^6.1" }, "config": { "allow-plugins": { "johnpbloch/wordpress-core-installer": vero } } }
Abbiamo il core di WordPress nella cartella WordPress. Ma dobbiamo copiare index.php al di fuori della directory di WordPress in modo da poter indirizzare il server Web alla directory principale.
Per gestire completamente WordPress con Composer , dobbiamo utilizzare una directory diversa per wp-content invece di quella predefinita, WordPress/wp-content.
Creiamo una nuova directory nella root del progetto chiamata wp-content.
Una volta copiato index.php dalla cartella di WordPress. Dobbiamo cambiare la posizione del file wp-blog-header.php in cui si trova la nostra directory WordPress.
Dopo la modifica, index.php avrà questo aspetto
<?php define('WP_USE_THEMES', vero); require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );
Abbiamo bisogno di creare un file .htaccess nella directory principale con i seguenti contenuti:
# INIZIA WordPress <IfModule mod_rewrite.c> RewriteEngine attivato RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule. /indice.php [L] </IfModule> # FINE WordPress
Andiamo avanti e copiamo il file wp-config.php di esempio e quindi aggiungiamo il seguente codice:
$dominio = 'miodominio.com; define('WP_SITEURL', "https://{$domain}/wordpress"); define('WP_HOME',"https://{$domain}"); $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' ); /** Percorso assoluto della directory di WordPress. */ if ( !defined('ABSPATH') ) { define('ABSPATH', dirname(__FILE__) . '/wordpress'); }
Abbiamo aggiunto WordPress in ABSPATH poiché il core di WordPress è in /WordPress
Poiché il file wp-config.php contiene dati sensibili; non lo inseriremo nel nostro repository creando un file .gitignore:
/wp-config.php /parolapress/ /wp-contenuto/ /venditore/
Anche le directory WordPress, wp-content e vendor devono essere ignorate in modo da aggiungerle anche al file .gitignore.
Nota: è necessario modificare la directory wp-content nel caso in cui si desideri aggiungere una convenzione di denominazione diversa per il contenuto wp.
La directory principale del nostro progetto dovrebbe essere simile a questa
.idiota .gitignore composer.lock composer.json venditore wp-config.php indice.php wordpress
Devi creare un database e modificare i dettagli in wp-config.php. Il tuo sito Web WordPress verrà chiamato "miodominio.com" e il back-end di WordPress sarà accessibile da miodominio.com/wordpress/wp-admin

Aggiunta di plugin e temi dal repository di WordPress
Per impostazione predefinita, Composer guarderà solo al repository packagist.org. Ma non contiene plugin e temi di WordPress.
Per poter inserire plugin e temi di WordPress, devi indirizzare Composer al repository wpackagist.org. Puoi farlo aggiungendo questo pezzo di configurazione nel tuo file composer.json:
"repository": [ { "tipo": "compositore", "url": "https://wpackagist.org", "soltanto": [ "wpackagist-plugin/*", "tema-wpackagist/*" ] } ],
Dobbiamo anche dire a Composer dove mettere plugin e temi. Ciò comporta l'aggiunta di un po' più di configurazione in composer.json:
"extra": { "percorsi-installer": { "wp-content/mu-plugins/{$name}/": [ "tipo:wordpress-muplugin" ], "wp-content/plugins/{$name}/": [ "tipo:plug-in wordpress" ], "wp-content/themes/{$name}/": [ "tipo:tema-wordpress" ] } }
Con quello in atto, ora puoi installare qualsiasi plugin o tema dai repository ufficiali usando il comando composer require, come abbiamo fatto per l'installazione di WordPress.
# Per installare un plugin, usa questo formato:
il compositore richiede "wpackagist-plugin/:"
# Per installare un tema, usa questo formato:
il compositore richiede "wpackagist-theme/:"
I vincoli di versione sono complicati, ma probabilmente la forma più semplice da ricordare è usare un carattere jolly *. Per installare la versione gratuita del nostro plug-in WP Migrate, utilizzando la versione 2.x, dovresti eseguire:
composer require "wpackagist-plugin/wp-migrate-db:2.*"
Se desideri sempre che i tuoi aggiornamenti ti forniscano l'ultima versione, puoi utilizzare un * come vincolo di versione:
composer require "wpackagist-plugin/wp-migrate-db:*"
La prima volta che esegui un comando come questo, ti potrebbe essere chiesto se vuoi "affidarti a" compositore/installer "per eseguire il codice". Questo è sicuro da fare, ma tieni presente che ciò consente a Composer di eseguire il codice sul tuo computer.
Se tutto va bene, dovresti installare il plugin (ma non attivarlo). Consiglierei anche di eseguire il commit delle modifiche su Git a questo punto.
Aggiunta di plugin e temi personalizzati o di terze parti
Va tutto bene se vuoi plugin e temi dal repository. Ma cosa succede se desideri aggiungere plug-in di terze parti che non si trovano nel repository wordpress.org o il tuo codice personalizzato? La directory di WordPress non è in Git, quindi come controlli la versione delle tue cose?
Alcuni autori di temi e plug-in supportano repository personalizzati per i loro plug-in.
E alcuni temi e plug-in non sono autorizzati a utilizzare alcun repository per i loro plug-in, ad esempio plug-in a pagamento.
Ma se ciò non si applica, il trucco qui è quello di non ignorare selettivamente directory specifiche utilizzando il file .gitignore e aggiungere quei plugin e temi personalizzati in composer.json.
Possiamo anche mettere quei plugin in un'altra directory per installarli da composer.json.
Poiché stiamo ignorando la cartella dei plugin in .gitignore, dobbiamo creare un'altra cartella chiamata dist,
Nel dist possiamo avere plugin a pagamento e personalizzati e possiamo installarli dal Composer.
- dist/
- plugin/
- temi/
- mu-plugin/
Dobbiamo copiare i nostri plugin e temi personalizzati nella cartella appropriata.
E dobbiamo creare composer.json per ogni plugin aggiunto in dist/plugins.
Attualmente, abbiamo advanced-custom-fields-pro, che è a pagamento. Vogliamo anche aggiungere quel plug-in tramite il compositore per l'installazione con un clic e automatizzare le distribuzioni.
Dobbiamo scaricare quel plugin dal portale del sito web dell'autore ed estrarlo nella cartella dist/plugins/advanced-custom-fields-pro. E crea composer.json nella stessa cartella con il seguente contenuto,
{ "name": "plug-in personalizzati/acf-pro", "description": "Campi personalizzati avanzati PRO", "versione": "5.12.2", "tipo": "plug-in wordpress", "richiedere": { "compositore/installatori": "^1.0", "johnpbloch/wordpress-core": ">=5.4" } }
Possiamo aggiungere qui la versione e il nome con prefissi personalizzati. E aggiungi del codice nel file root composer.json per chiamare questo plugin mentre lo installiamo.
Nella sezione "repositories": aggiungi il seguente codice nell'ultimo,
"repository": [ { "tipo": "percorso", "url": "dist/plugins/*", "opzioni": { "link simbolico": falso }
Hai anche altre voci nella sezione repository. Per installare questo plugin, abbiamo due modi, prima di aggiungere il nome del plugin con la versione nel file
"richiedere": { "custom-plugins/acf-pro": ">=5.12.2" }
Oppure esegui il comando seguente, installerà il plug-in e aggiungerà la voce sopra nel composer.json.
$ composer richiede plug-in personalizzati/acf-pro
Allo stesso modo, possiamo installare temi e plugin mu.
Per il tema, dobbiamo aggiungere la posizione della cartella del tema,
"repository": [ { "tipo": "percorso", "url": "dist/temi/*", "opzioni": { "link simbolico": falso }
Devi aggiungere composer.json nel tuo tema personalizzato con nome e dettagli della versione. Usando quel nome, possiamo installare il tema usando il comando composer require.
Insomma
L'utilizzo di Composer è l'approccio più efficace per garantire che il tuo WordPress rimanga sicuro, aggiornato e riproducibile. Composer consente agli sviluppatori di aggiungere e aggiornare facilmente le dipendenze nei loro progetti e bloccare le loro versioni esatte per garantire che ogni nuovo ramo funzioni con lo stesso codice.
Con questi vantaggi, Composer è un'ottima scelta per la gestione dei progetti WordPress, garantendo build ripetibili e aggiornamenti di cui è possibile eseguire il commit.
Comprendiamo che iniziare con Composer può essere un po' opprimente. In caso di domande, non esitare a contattarci. Siamo qui per aiutarti a ottenere il massimo dalla tua esperienza WordPress.
Riferimenti:
- https://docs.platform.sh/guides/wordpress/composer.html
- https://deliciousbrains.com/storing-wordpress-in-git/
- https://time2hack.com/composer-wordpress-deployment/