Cum să lucrezi cu WordPress pe localhost

4 mai 2015, 22:16:16
Vizualizări: 17.9K
Voturi: 8

Rulez un site WordPress pe laptopul meu folosind localhost și am nevoie să îl vadă și colegii mei. Dacă introduc IP-ul casei mele, au reușit să acceseze site-ul, dar toate URL-urile din WordPress care foloseau site_url() sau similar afișau "localhost", ceea ce nu a funcționat pentru cei din afara rețelei.

Așa că am schimbat WordPress să folosească IP-ul meu pentru URL-ul site-ului, ceea ce a rezolvat problema, dar a creat una nouă. Dacă iau laptopul de acasă și încerc să vizualizez site-ul, toate link-urile apar ca http://home-ip/ care nu este disponibil. Mai mult, nu pot să intru în wp-admin să schimb URL-ul site-ului înapoi la localhost pentru că sunt redirecționat către http://home-ip/site/wp-admin/.

Există vreo metodă de a gestiona această situație fără a fi nevoit să schimb constant URL-ul de fiecare dată când vreau ca cineva să acceseze site-ul din exterior sau de fiecare dată când plec de acasă.

0
Toate răspunsurile la întrebare 3
2
10

Poți folosi wp-config.php pentru a schimba URL-ul site-ului în funcție de locul de unde este accesat, utilizând $_SERVER['REMOTE_ADDR']. Al meu are ceva de genul:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') { 
    // accesez site-ul de pe serverul local
    define('WP_SITEURL', 'http://localhost/mysite/');
    define('WP_HOME', 'http://localhost/mysite');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
    // accesez site-ul de pe o altă mașină din rețeaua mea locală, 
    // toate adresele lor (interne) de rețea încep cu acest număr;
    // următoarea linie furnizează adresa de rețea internă a serverului 
    define('WP_SITEURL', 'http://192.168.0.192/mysite/');
    define('WP_HOME', 'http://192.168.0.192/mysite');
} else { //accesez site-ul din afara casei
    define('WP_SITEURL', 'http://89.*.*.*/mysite/'); //înlocuiește cu adresa IP externă a casei tale
    define('WP_HOME', 'http://89.*.*.*/mysite');
}
//error_log("Siteurl is ".WP_SITEURL);

Această tehnică ajută foarte mult și la simplificarea încărcării site-ului pe un server de producție sau la menținerea în sincron a versiunilor locale și de producție ale site-ului. (Cu toate acestea, evident, fișierul wp-config.php de pe serverul de producție nu ar trebui să conțină acest cod.)

Notă: Din anumite motive, nu pot folosi adresa mea IP externă de pe alte mașini din rețeaua mea locală; dacă nu este cazul tău, poți elimina partea cu else if, lăsând doar partea cu else.

5 mai 2015 00:06:58
Comentarii

Mulțumesc, asta a funcționat pentru mine. Totuși, a trebuit să adaug || $_SERVER['REMOTE_ADDR'] == '::1'

user1778856 user1778856
5 mai 2015 02:09:56

Interesant, nu știam despre asta, dar o căutare rapidă îmi spune că "::1 este adresa de loopback în IPv6. Gândește-te la ea ca la versiunea IPv6 a lui 127.0.0.1". Am editat răspunsul pentru a o include.

adelval adelval
5 mai 2015 02:40:18
0

Deși răspunsul acceptat pare a fi unul bun, simpla modificare a WP_SITEURL/WP_HOME nu funcționează în cazul meu, deoarece există întotdeauna o mulțime de legături absolute în conținutul text al paginilor (de exemplu, imagini sau link-uri adăugate prin editorul WYSIWYG). Cu alte cuvinte, practic trebuie să folosesc același domeniu dacă vreau ca site-ul să funcționeze corect.

Așadar, în cazul în care ajută pe altcineva care întâlnește această problemă, soluția mea a fost una din afara WordPress - deși poate nu ajută în toate cazurile.

Folosesc un domeniu, de exemplu me.mycompany.com, și apoi în fișierul meu HOSTS îl fac să se rezolve la 127.0.0.1 (cu alte cuvinte, localhost). Pentru oricare dintre colegii mei care trebuie să vizualizeze site-ul, adaug domeniul meu în fișierul lor HOSTS cu IP-ul meu local.

Această soluție este extinsă și atunci când clienții din afara rețelei noastre trebuie să vizualizeze site-ul; pur și simplu ne asigurăm că me.mycompany.com se rezolvă la IP-ul nostru public (de obicei furnizorul tău de hosting te poate ajuta cu asta, și cu siguranță ajută dacă ai un IP static pentru conexiunea ta la Internet), iar apoi la routerul nostru, rutăm cererile web către IP-ul meu intern, stabilind efectiv o soluție ușoară de hosting web (doar pentru dezvoltare, desigur, nu pentru producție!).

Sper că acest lucru ajută pe cineva. Fișierul HOSTS poate fi editat pe orice platformă, evident instrucțiunile diferă pentru Windows, Mac și Linux, așa că cel mai bine este să cauți pe Google ajutor dacă ai nevoie, dar în Windows fișierul este C:\Windows\System32\drivers\etc\hosts - deschide-l în Notepad și fă modificările necesare, urmând formatul din fișier (va trebui să rulezi ca Administrator pentru a putea salva fișierul).

5 mai 2015 02:45:13
0

Începând cu WordPress 5.5.1, poți utiliza funcția wp_get_environment_type. Setează wp_get_environment_type în fișierul wp-config.

21 mar. 2021 14:45:18