WordPress usa sempre il solito pattern di cartelle per un’installazione standard. Tuttavia, il CMS è altamente configurabile, e permette di modificare davvero ogni minimo particolare, compresi i path predefiniti delle diverse cartelle.
In quest’articolo, ti spiegherò brevemente come cambiare i path predefiniti delle principali cartelle di WordPress. Tieni presente che questo procedimento può portare a possibili rischi, per cui i consigli sono sempre gli stessi:
- se stai apportando modifiche ad un progetto importante, evita di farlo direttamente sull’ambiente live, e possibilmente rivolgetevi ad un esperto;
- se stai acquisendo dimestichezza su WordPress, potrai tentare di apportare le modifiche che suggerite in quest’articolo. Tuttavia, la precondizione dev’essere sempre quella di effettuare una copia di backup dei file e del database. In questo modo potrai ripristinare senza grossi problemi, in un secondo momento, un’installazione funzionante al posto di una compromessa.
Ricordati sempre che il miglior modo di familiarizzare con WordPress è utilizzarlo in locale, attraverso ambienti di test e sviluppo. Se non sai come fare, ti consiglio di leggere questa guida.
Procedimento per cambiare i path:
Un’installazione di WordPress, nel 99% dei casi, presenterà sempre la stessa struttura delle cartelle, che possiamo sintetizzare in questo modo:
- cartella principale
- wp-admin
- wp-includes
- wp-content
- plugins
- themes
- uploads
Esistono anche tante altre sottocartelle, ma per il momento ci concentreremo su queste.
WordPress registra questi path attraverso dei “defines” in PHP, che non sono nient’altro che delle costanti. Ad esempio, il path della cartella wp-content è definito dalla costante WP_CONTENT_DIR. Provando a fare una ricerca all’interno della cartella principale di WordPress, sarà semplice capire dove questo path sia definito, ovvero all’interno del file wp-includes/default-constants.php. Ecco lo snippet che definisce la nostra costante:
if ( ! defined( 'WP_CONTENT_DIR' ) ) {
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down
}
Come si può facilmente notare dallo snippet, WordPress verifica che la costante WP_CONTENT_DIR non sia già definita. Nel caso in cui non lo fosse, la definisce nella maniera a noi più familiare, ovvero all’interno della cartella wp-content, subito sotto la cartella principale della nostra installazione di WordPress.
Andando a verificare il file default-constants.php, troveremo la definizione di tante altre costanti di path a noi familiari.
Ad esempio, qualche decina di righe dopo, troveremo la definizione del path e dell’url dei plugin:
/**
* Allows for the plugins directory to be moved from the default location.
*
* @since 2.6.0
*/
if ( ! defined( 'WP_PLUGIN_DIR' ) ) {
define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash
}
/**
* Allows for the plugins directory to be moved from the default location.
*
* @since 2.6.0
*/
if ( ! defined( 'WP_PLUGIN_URL' ) ) {
define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash
}
Il modo migliore per ridefinire le nostre costanti, sarà perciò quello di utilizzare il file wp-config.php, posto direttamente nella cartella principale della nostra installazione di WordPress. Basterà aggiungere un define come segue:
define( 'PLUGINDIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content/plugins' );
Ricordatevi che il path che wordpress si aspetta è un path assoluto, motivo per cui abbiamo aggiunto la base del path attraverso la variabile super globale $_SERVER[‘DOCUMENT_ROOT’].