diff --git a/.gitignore b/.gitignore index 7ee8d0f81ba53c85280fe7d1a70c7ed30be520fb..40fad208e879f0673c0cd87158dcc9020d11156d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ vendor/* auth.json -mu-plugins-src/* app/* diff --git a/README.md b/README.md index 2b0f57f3144d39dcb0ac14c710956645e8951c54..95026264deed4e370eb6581c89486a18f72da338 100644 --- a/README.md +++ b/README.md @@ -72,11 +72,28 @@ Per ri-applicare tutte the patches senza aggiornare le dipendenze (per fare prim composer update nothing ``` -# Struttura delle directory di Wordpress +# Struttura delle directory generate -Composer non è contento di spacchettare due dipendenze nella stessa directory. Quindi separa wordpress-core in ```app/wp```, mentre c'è un ```app/wp-content``` dove vengono spachettati i vari temi/plugins/etc. Bisognerà fare dei magheggi per riscrivere le URL. [Vedi qui](https://www.smashingmagazine.com/2019/03/composer-wordpress/) e [qui](https://roots.io/docs/bedrock/master/server-configuration/#apache-configuration-for-bedrock). +Composer quando aggiorna un pacchetto, rimuove tutti i file che trova nella directory dove deve essere spacchettato, prima di mettere quelli nuovi (di modo che non rimangano file "vecchi"). Questo vuol dire che se si aggiorna wordpress-core dopo aver installato temi e pacchetti, questi ultimi vengono rimossi, **a meno che** non siano stati installati in una directory separata. -Altenativamente, possiamo rimettere tutto a posto quando creiamo l'immagine Docker, che forse è la cosa più semplice da fare. +Mi sembra che di suo composer segua l'ordine dei requirement nel file json nell'ordine in cui sono scritti, per cui forse non è un problema. L'alternativa, sicuramente più "stabile", è separare le directory in questo modo: + +- una directory ```app/``` dove troveremo tutto il codice che dovrà andare dentro il container +- una directory ```vendor/``` dove verranno spacchettate alcune dipendenze di cui però solo alcuni file vengono copiati, tramite il meccanismo dei ```drop-in```, dentro ```app/```. I drop-in non cancellano nessun file quindi non abbiamo problema a mandare più cose dentro la stessa destinazione. + +A sua volta ```app/``` è strutturata così: + +- una directory ```app/wp-core``` dove viene spacchettato il codice di wordpress core +- una directory ```app/wp-root``` che sarà la root di wordpress dove mettere tutto il resto + +In particolare dentro ```app/wp-root``` avremo +- una directory ```wp-content``` separata dove spacchettare temi, plugin, traduzioni +- una directory ```wp-includes``` separta dove mettere alcune librerie js +- ci sono inoltre dei file "spuri", principalmente di r2db e hyperdb, che vanno messi in giro. Questi al momento sono: + + ```db.php``` e ```advanced-cache.php``` che vanno in ```app/wp-root/wp-content``` + + ```db-config.php```, ```r2db/```, ```wp-nginx-map-json.php``` e ```wp-nginx-map.php``` che devono stare nella root di wordpress, quindi li mettiamo direttamente in ```app/wp-root/``` + +Al momento di creare il container, ci dobbiamo ricordare che i contenuti di ```app/wp-core``` vanno copiati dentro ```app/wp-root```, e che questa è l'unica directory che va tenuta dentro il container. # Come dovrebbe funzionare a regime diff --git a/composer.json b/composer.json index 68b8c3399a57177c3489641b11f9f0cffcc2c37e..67750669835e7d268622b413018c1e58b7a3276d 100644 --- a/composer.json +++ b/composer.json @@ -93,26 +93,26 @@ "noblogs/remove-gravatar": "^0.1.0" }, "extra": { - "wordpress-install-dir": "app/", + "wordpress-install-dir": "app/wp-core", "installer-types": ["bower-asset", "npm-asset"], "installer-paths": { - "mu-plugins-src/{$name}": [ + "vendor/{$name}": [ "wpackagist-plugin/hyperdb", "wpackagist-plugin/disable-wordpress-updates", "wpackagist-plugin/wpmu-new-blog-defaults", "wpackagist-plugin/more-privacy-options", "wpackagist-plugin/disable-emojis", "type:wordpress-muplugin"], - "app/{$name}": ["type:wordpress-dropin"], - "app/wp-content/plugins/{$name}/": ["type:wordpress-plugin"], - "app/wp-content/themes/{$name}/": ["type:wordpress-theme"], - "app/wp-includes/js/{$name}/": ["type:npm-asset", "type:bower-asset"] + "app/wp-root/{$name}": ["type:wordpress-dropin"], + "app/wp-root/wp-content/plugins/{$name}/": ["type:wordpress-plugin"], + "app/wp-root/wp-content/themes/{$name}/": ["type:wordpress-theme"], + "app/wp-root/wp-includes/js/{$name}/": ["type:npm-asset", "type:bower-asset"] }, - "wordpress-language-dir": "app/wp-content/languages/", + "wordpress-language-dir": "app/wp-root/wp-content/languages/", "wordpress-languages": [ "en_GB", "it_IT" ], "patches-file": "composer.patches.json", "dropin-paths": { - "app/wp-content/mu-plugins" : [ + "app/wp-root/wp-content/mu-plugins" : [ "package:wpackagist-plugin/disable-wordpress-updates:disable-updates.php", "package:wpackagist-plugin/wpmu-new-blog-defaults:cets_blog_defaults.php", "package:wpackagist-plugin/more-privacy-options:ds_wp3_private_blog.php", @@ -120,8 +120,8 @@ "package:noblogs/ai-mu-plugins:embed.php,remove-password-change-notification.php,send-smtp-email.php", "package:noblogs/noblogs-wp-ssl:noblogs-wp-ssl.php" ], - "app/wp-content": ["package:wpackagist-plugin/hyperdb:db.php", "package:wpackagist-plugin/wp-super-cache:advanced-cache.php"], - "app": ["package:noblogs/r2db:db-config.php,nginx-map/wp-nginx-map-json.php,nginx-map/wp-nginx-map.php"] + "app/wp-root/wp-content": ["package:wpackagist-plugin/hyperdb:db.php", "package:wpackagist-plugin/wp-super-cache:advanced-cache.php"], + "app/wp-root": ["package:noblogs/r2db:db-config.php,nginx-map/wp-nginx-map-json.php,nginx-map/wp-nginx-map.php"] } } } diff --git a/composer.lock b/composer.lock index 24a26a1cc5c83ea114a6001ed531e3d3222c3b3e..86b7caff70ba0009e5699e231297760f0ba6c02b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9379ac8609fce3a62060ed5a3ab21343", + "content-hash": "ebc9141a092ac29f1a6071d970eaefa5", "packages": [ { "name": "bjornjohansen/wplang",