Come gestire WordPress su localhost
Sto eseguendo un sito WordPress sul mio laptop utilizzando localhost e spesso ho bisogno che i miei colleghi possano vederlo. Se inseriscono l'IP di casa mia, erano in grado di accedere al sito, ma tutti gli URL in WordPress che utilizzavano site_url() o simili restituivano "localhost", il che ovviamente non funzionava per gli esterni.
Quindi ho modificato WordPress per utilizzare il mio IP come URL del sito, risolvendo quel problema, ma ne ho creato un altro. Se porto il mio laptop fuori casa e provo a visualizzare il mio sito, ora tutti i link appaiono come http://home-ip/ che non è disponibile. Inoltre, non riesco ad accedere a wp-admin per cambiare l'URL del sito tornando a localhost perché vengo reindirizzato a http://home-ip/site/wp-admin/.
Esiste un modo per gestire questo problema senza dover cambiare costantemente l'URL ogni volta che voglio che qualcun altro vi acceda dall'esterno o ogni volta che esco di casa?
Puoi utilizzare wp-config.php
per modificare l'URL del sito in base al punto di accesso, usando $_SERVER['REMOTE_ADDR']
. Il mio file contiene qualcosa del genere:
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') {
// accesso al sito dal mio server locale
define('WP_SITEURL', 'http://localhost/miosito/');
define('WP_HOME', 'http://localhost/miosito');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
// accesso al sito da un'altra macchina nella mia rete domestica,
// tutti i loro indirizzi (interni) di rete iniziano con questo numero;
// la riga seguente fornisce l'indirizzo di rete interno del server
define('WP_SITEURL', 'http://192.168.0.192/miosito/');
define('WP_HOME', 'http://192.168.0.192/miosito');
} else { //accesso al sito dall'esterno della rete domestica
define('WP_SITEURL', 'http://89.*.*.*/miosito/'); //sostituisci con il tuo IP pubblico
define('WP_HOME', 'http://89.*.*.*/miosito');
}
//error_log("L'URL del sito è ".WP_SITEURL);
Questa tecnica aiuta molto anche a semplificare il caricamento del sito su un server di produzione o a mantenere sincronizzate le versioni locali e di produzione del sito. (Ovviamente, il file wp-config.php
sul server di produzione non dovrebbe contenere questo codice.)
Nota: Per qualche motivo, non posso utilizzare il mio IP pubblico da altre macchine nella mia rete domestica; se questo non è il tuo caso, puoi rimuovere la parte else if
, lasciando solo la parte else
.

Grazie, questo ha funzionato per me. Tuttavia ho dovuto aggiungere un || $_SERVER['REMOTE_ADDR'] == '::1'

Anche se la risposta accettata sembra essere buona, semplicemente cambiare WP_SITEURL/WP_HOME non funziona nel mio caso perché alla fine ci sono sempre molti link assoluti nel contenuto testuale delle pagine (ad esempio immagini o link aggiunti tramite l'editor WYSIWYG). In altre parole, praticamente devo usare lo stesso dominio se voglio che il sito funzioni correttamente.
Quindi, nel caso possa aiutare qualcun altro che si imbatte in questo, la mia soluzione è stata esterna a WordPress - anche se potrebbe non essere utile in tutti i casi.
Uso un dominio, ad esempio me.mycompany.com, e poi nel mio file HOSTS lo faccio risolvere a 127.0.0.1 (in altre parole, localhost). Per qualsiasi mio collega che ha bisogno di visualizzare il sito, aggiungo il mio dominio al loro file HOSTS con il mio IP locale.
Questa soluzione si estende anche quando clienti esterni alla nostra rete devono visualizzare il sito; ci assicuriamo semplicemente che me.mycompany.com risolva al nostro IP pubblico (di solito il tuo web host può aiutarti con questo, e aiuta sicuramente se hai anche un IP statico per la tua connessione Internet), e poi al nostro router, instradiamo le richieste web al mio IP interno, configurando effettivamente una soluzione di hosting web semplice (solo per sviluppo, ovviamente, non per la produzione!).
Spero che questo aiuti qualcuno. Il file HOSTS può essere modificato su qualsiasi piattaforma, ovviamente le istruzioni differiscono per Windows, Mac e Linux quindi è meglio che tu cerchi su Google se hai bisogno di aiuto, ma in Windows il file si trova in C:\Windows\System32\drivers\etc\hosts - aprilo con Notepad e apporta le modifiche necessarie, seguendo il formato del file (dovrai eseguire come Amministratore per poter salvare il file).

Da WordPress 5.5.1 puoi utilizzare la funzione wp_get_environment_type. Imposta wp_get_environment_type
all'interno di wp-config.
