Investigamos en el mundo online para regalarte la solución a tu inquietud, si continúas con alguna difcultad deja tu duda y te responderemos sin falta.
Solución:
Estás haciendo dos preguntas a la vez:
- Cuál es la diferencia entre
home_url()
ysite_url()
? - ¿Cómo consigo que WordPress devuelva la raíz de la URL sin el subdirectorio donde está instalado?
Aquí están las respuestas, y las confirmé con Andrew Nacin, un desarrollador central de WordPress, y también realicé algunas pruebas del servidor para confirmar lo que Andrew me dijo.
Pregunta 1
En General> Configuración de wp-admin, home_url()
hace referencia al campo denominado “Dirección del sitio (URL)”. Confuso, ¿eh? Sí, dice “Dirección del sitio”, por lo que puede suponer site_url()
, pero estarías equivocado. Ejecute su propia prueba y verá. (Puede soltar temporalmente un echo H1
campo con site_url()
y home_url()
valores en la parte superior de functions.php de su tema).
Mientras tanto, site_url()
hace referencia al campo denominado “Dirección de WordPress (URL)” en General> Configuración.
Por lo tanto, si desea hacer referencia a dónde podría estar una ruta física, como llamar a la ruta de la carpeta de un complemento en la URL para cargar una imagen, o llamar a la ruta de la carpeta de un tema para cargar una imagen, en realidad debería usar otras funciones para esas: mirar plugins_url()
y get_template_directory_uri()
.
los site_url()
siempre será la ubicación donde puede llegar al sitio al virar /wp-admin
al final, mientras home_url()
no sería confiablemente esta ubicación.
los home_url()
sería donde haya configurado su página de inicio configurando el campo General> Configuración “Dirección del sitio (URL)”.
Pregunta 2
Entonces, si coloqué mi blog en http://example.com/blog
, y example.com
es solo algo static sitio donde tengo como un tema de cartera, entonces este sería un escenario que se alinea con su pregunta. En tal caso, usaría este fragmento de código:
TLDR:
En una instalación no estándar, puede colocar sus archivos de WordPress en un subdirectorio de la raíz de su sitio web.
... y aún permitir que sus visitantes accedan a su "sitio web" de WordPress desde la URL de dominio (raíz) de su sitio, sin agregar el nombre del subdirectorio:
(es decir: www.example.com
vs www.example.com/wordpress
):
WP function | wp_options. | WP constant | what it represents | WP Settings Label | Example
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl` | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home` | `WP_HOME` | browser address bar | Site Address | https://www.example.com
Donde el valor de una constante de WP tiene prioridad sobre un valor de configuración de wp_options / WP.
Diferentes configuraciones para WordPress
En la más estándar Instalaciones de WordPress, home_url
y site_url
tendrá el mismo valor.
Independientemente, representan dos cosas diferentes.
en un no estándar instalación, pueden tener valores diferentes.
NOTA: Dejo el protocolo en mi respuesta para facilitar la lectura.
En esta publicación, ANTE CADA URL con:
https://
,http://
O//
(a menos que ya lo haya incluido).
(//
es el relative
protocolo y funcionará para uno o ambos http://
o https://
)
Instalaciones estándar (incluidas las instalaciones con "un clic")
home_url
: es la página de inicio de su sitio web (wordpress), como se indica en la barra de direcciones del usuario.site_url
: es el directorio donde se encuentran sus archivos de wordpress.
La instalación de 5 minutos de WordPress instala archivos de wordpress, estos dos valores serán los mismos: los archivos de wordpress se instalarán en la misma carpeta que desea que las personas usen para dirigirse a su sitio web, o la parte de wordpress (blog) del sitio web de su servidor.
Ejemplo 1:
el usuario accede a su blog en: www.example.com
,
archivos de wordpress instalados en: www.example.com
, o la carpeta raíz del sitio web de su servidor.
home_url
=== site_url
=== "www.example.com"
Ejemplo 2:
el usuario accede a su blog en: www.example.com/blog
,
archivos de wordpress instalados en: www.example.com/blog
, o en el blog
carpeta dentro de la raíz de su sitio web.
home_url
=== site_url
=== "www.example.com/blog"
En este caso www.example.com
es el sitio web principal, y www.example.com/blog
es la raíz de tu blog.
Aquí su blog está separado y funciona como un subconjunto de su sitio web principal.
En este caso, su sitio web principal es no controlado, definido o diseñado por WordPress.
Solo tu blog lo es. Todas las URL de tu blog serán procesadas por www.example.com/blog
Nota: En la documentación, "sitio / sitio web de Wordpress" (a diferencia de simplemente "sitio / sitio web") se refiere al directorio donde están instalados los archivos de WordPress. En este caso lo es www.example.com/blog
- todo dentro del blog
carpeta. El "sitio web de WordPress", en este escenario, no es el mismo que su dominio, su raíz o su sitio web principal. Es un subconjunto de su sitio web general. Algo así como un sitio web dentro de un sitio web. Menciono esto porque la terminología puede parecer poco clara o confusa, dada esta configuración en particular.
Configuración alternativa de instalación de WordPress
Dando a WordPress su propio directorio, la sección Method II (With URL change)
.
Por ejemplo, muchas personas no quieren obstruir la carpeta raíz de su sitio web con todos los archivos de wordpress.
Quieren instalar WordPress en un subdirectorio, * pero tienen acceso al "blog" o al "sitio web de WordPress". como si los archivos se instalaron en la raíz del servidor del sitio web.
Esto es particularmente true cuando WordPress se usa para construir y ejecutar un sitio web completo que ni siquiera tiene un "blog".
Ejemplo 3:
el usuario accede a su "blog" en: www.example.com
,
archivos de wordpress instalados en: www.example.com/wordpress
, o la carpeta raíz del sitio web de su servidor.
home_url
=== "www.example.com"
site_url
=== "www.example.com/wordpress"
(Nota: esta configuración no funcionará "lista para usar" simplemente cambiando los valores de estas variables. Requiere cambios de configuración adicionales para funcionar correctamente)
Consulte Dar a WordPress su propio directorio, la sección titulada Method II (With URL change)
para saber cómo hacer esto.
En esta caso home_url
y site_url
debe tener valores diferentes.
En esta configuración, desea que su sitio web función exactamente como si Los archivos de WordPress se instalaron en el directorio raíz del servidor de su sitio web ...
PERO, para fines organizativos en el servidor,
usted Realmente tener sus archivos de WordPress en una carpeta llamada wordpress
en el directorio raíz del servidor de su sitio web.
Entonces, el usuario escribirá www.example.com
para obtener su página de inicio de WordPress, en lugar de www.example.com/wordpress
función wordpress <--> variable de base de datos <--> Constante de Wordpress
Esta sección asume la configuración del Ejemplo 3 anterior.
URL de la barra de direcciones: www.example.com
archivos de wordpress: directorio / wordpress
(Los otros casos son triviales: todas las variables / funciones tienen / devuelven el mismo valor).
Cómo establecer los valores para site_url
y home_url
Primero, déjame notar que siteurl
y home
almacenar valores devueltos por las funciones anteriores
1) Normalmente, establece estos valores en el backend / panel de control / panel de administración de WordPress:Settings -> General ->
siteurl
Dirección de WordPress: https://www.example.com/wordpress
home
Dirección del sitio: https://www.example.com
(no incluya barras diagonales finales aquí, que se configurarían en otro lugar)
2) Alternativamente, establece estos valores en su base de datos de WordPress:wp_options
mesa ->
`options_name` | `options_value`
----------------------------------------------------
`siteurl` | `https://www.example.com/wordpress`
`home` | `https://www.example.com`
(no incluya barras diagonales finales aquí, que se configurarían en otro lugar)
3) Edite su wp-config.php
Definir estas constantes específicas para mantener tus valores
Definir WP_HOME
y WP_SITEURL
ajustes insertando estas líneas hacia la parte superior de su wp-config.php
expediente:
define('WP_SITEURL','http://example.com/wordpress'); // wordpress core files
define('WP_HOME','http://example.com'); // address bar url
// ** MySQL settings - You can get this info from your web host ** //
...
(no incluya barras diagonales finales aquí, que se configurarían en otro lugar)
Referencia: WP_SITEURL y WP_HOME
NOTA: Esto es confuso
(Realmente desearía que WordPress hubiera etiquetado las configuraciones de manera similar a sus nombres php,
tal como Wordpress Site Address
y Home Page Address
o algo más explícito como location of WordPress Site core files
y browser url to access WordPress home page
)
`WP_SITEURL` <--> `site_url()` <--> `siteurl` <--> Wordpress Address <--> /wordpress
`WP_HOME` <--> `home_url()` <--> `home` <--> Site Address <--> /
¡Aquí es donde se pone complicado!
SI definiste esas constantes en tu wp-config.php
archivo no importa qué valores tiene en su base de datos / página de configuración.
De hecho, no podrá modificar este valor a través del back-end (estará atenuado). Aún puede modificar editando su base de datos, pero hacerlo no tendrá ningún efecto en su sitio, mientras que las constantes existan en su archivo wp-config.
Tu archivo de configuración no cambiará los valores en su base de datos (o por lo tanto en su página de configuración). En su lugar, los valores de la página de configuración / base de datos será ignorado. Los valores en wp-config anulan o tienen prioridad sobre la configuración de su base de datos.
Entonces ... para terminar (TLDR):
WP function | wp_options. | WP constant | what it represents | WP Settings Label | Example
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl` | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home` | `WP_HOME` | browser address bar | Site Address | https://www.example.com
Donde el valor de una constante de WP tiene prioridad sobre un valor de configuración de wp_options / WP.
El valor de registro de wp_options y el valor de Configuración de WP son iguales.
Al editar uno, por definición se edita el otro.
Son solo 2 formas diferentes de acceder a la misma variable.
Por otro lado, las constantes de WordPress son únicas e independientes.
Internamente, las constantes de WordPress (PHP) anulan sus contrapartes db.
Si se define una constante en wp-config, lo hace no cambiar la base de datos.
Pero internamente WordPress siempre preferirá / usará su valor en lugar de del db one.
Si desea que WP se instale en un directorio, pero el sitio se encuentra en la raíz de su dominio, debe mover el archivo index.php principal a la raíz de su dominio y editar la declaración require para que apunte dentro de su directorio.
Este proceso se describe aquí: Dar a WordPress su propio directorio.
Comentarios y valoraciones del artículo
Puedes secundar nuestro ensayo ejecutando un comentario y dejando una puntuación te estamos eternamente agradecidos.