Cómo manejar WordPress en localhost

4 may 2015, 22:16:16
Vistas: 17.9K
Votos: 8

Estoy ejecutando un sitio WP en mi portátil usando localhost, y a menudo necesito que mis compañeros de trabajo lo vean. Si ingresan la IP de mi casa, podían acceder al sitio, pero todas las URL en WP que usaban site_url() o similares mostraban "localhost", lo cual no funcionaba para usuarios externos.

Así que cambié WP para usar mi IP como URL del sitio, lo cual resolvió ese problema, pero creó otro. Si llevo mi portátil fuera de casa e intento ver mi sitio, ahora todos los enlaces aparecen como http://ip-de-casa/ que no está disponible. Además, no puedo acceder a wp-admin para cambiar la URL del sitio de vuelta a localhost ya que me redirige a http://ip-de-casa/sitio/wp-admin/.

¿Hay alguna manera de manejar esto sin tener que cambiar constantemente la URL cada vez que quiero que alguien más acceda desde fuera, o cada vez que salgo de casa?

0
Todas las respuestas a la pregunta 3
2
10

Puedes usar wp-config.php para cambiar la URL del sitio dependiendo de desde dónde se acceda al sitio, utilizando $_SERVER['REMOTE_ADDR']. El mío tiene algo como esto:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1' || $_SERVER['REMOTE_ADDR'] == '::1') { 
    // accediendo al sitio desde mi servidor local
    define('WP_SITEURL', 'http://localhost/mysite/');
    define('WP_HOME', 'http://localhost/mysite');
} else if (strpos($_SERVER['REMOTE_ADDR'],'192.168.0.') !== false) {
    // accediendo al sitio desde otra máquina en mi red doméstica, 
    // todas sus direcciones (internas) de red comienzan con este número;
    // la siguiente línea proporciona la dirección de red interna del propio servidor 
    define('WP_SITEURL', 'http://192.168.0.192/mysite/');
    define('WP_HOME', 'http://192.168.0.192/mysite');
} else { //accediendo al sitio desde fuera de casa
    define('WP_SITEURL', 'http://89.*.*.*/mysite/'); //reemplaza por tu IP externa de casa
    define('WP_HOME', 'http://89.*.*.*/mysite');
}
//error_log("Siteurl is ".WP_SITEURL);

Esta técnica también ayuda mucho a simplificar la subida del sitio a un servidor de producción o mantener sincronizadas las versiones local y de producción del sitio. (Aunque, obviamente, el wp-config.php en el servidor de producción no debería tener este código.)

Nota: Por alguna razón, no puedo usar mi IP externa de casa desde otras máquinas en mi red doméstica; si ese no es tu caso, puedes eliminar la parte else if, dejando solo la parte else.

5 may 2015 00:06:58
Comentarios

Gracias, esto funcionó para mí. Sin embargo tuve que agregar un || $_SERVER['REMOTE_ADDR'] == '::1'

user1778856 user1778856
5 may 2015 02:09:56

Interesante, no lo sabía, pero una búsqueda rápida me dice que "::1 es la dirección de loopback en IPv6. Piensa en ella como la versión IPv6 de 127.0.0.1". He editado la respuesta para incluirla.

adelval adelval
5 may 2015 02:40:18
0

Aunque la respuesta aceptada parece ser buena, simplemente cambiar WP_SITEURL/WP_HOME no funciona en mi caso porque siempre terminan quedando muchos enlaces absolutos en el contenido de texto de las páginas (por ejemplo, imágenes o enlaces agregados a través del editor WYSIWYG). En otras palabras, prácticamente tengo que usar el mismo dominio si quiero que el sitio funcione correctamente.

Así que, en caso de que ayude a alguien más que se encuentre con esto, mi solución fue una externa a Wordpress - aunque puede que no ayude en todos los casos.

Yo uso un dominio, por ejemplo me.miempresa.com, y luego en mi archivo HOSTS lo hago que resuelva a 127.0.0.1 (en otras palabras, localhost). Para cualquiera de mis colegas que necesiten ver el sitio, agrego mi dominio a su archivo HOSTS con mi IP local.

Esta solución también se extiende cuando clientes fuera de nuestra red necesitan ver el sitio; simplemente nos aseguramos de que me.miempresa.com resuelva a nuestra IP pública (generalmente tu proveedor de hosting puede ayudar con esto, y definitivamente ayuda si también tienes una IP estática para tu conexión a Internet), y luego en nuestro router enrutamos las solicitudes web a mi IP interna, configurando efectivamente una solución de hosting web fácil (¡solo para desarrollo, por supuesto, no para producción!).

Espero que esto ayude a alguien. El archivo HOSTS puede editarse en cualquier plataforma, obviamente las instrucciones difieren para Windows, Mac y Linux así que es mejor que busques en Google si necesitas ayuda, pero en Windows el archivo está en C:\Windows\System32\drivers\etc\hosts - ábrelo en el Bloc de notas y haz los cambios necesarios, siguiendo el formato del archivo (necesitarás ejecutar como Administrador para poder guardar el archivo).

5 may 2015 02:45:13
0

A partir de WordPress 5.5.1 puedes usar la función wp_get_environment_type. Configura wp_get_environment_type dentro de wp-config.

21 mar 2021 14:45:18