Entiendo que site_url()
devuelve la ubicación donde están los archivos principales de WordPress.
Entonces, si mi blog está alojado en, http://example.com/blog
entonces site_url()
regresahttp://example.com/blog
Pero entonces, ¿cómo home_url()
difiere? Para mí, home_url()
devuelve lo mismo:http://example.com/blog
Si eso es correcto, ¿puedo hacer que WordPress regrese http://example.com/
?
Respuestas:
Estás haciendo dos preguntas a la vez:
home_url()
ysite_url()
?Aquí están las respuestas, y lo confirmó con Andrew Nacin, un desarrollador principal de WordPress, y también realicé algunas pruebas de servidor para confirmar lo que Andrew me contó.
Pregunta 1
En General> Configuración de wp-admin, hace
home_url()
referencia al campo etiquetado "Dirección del sitio (URL)". Confuso, ¿eh? Sí, dice "Dirección del sitio", así que puedes suponersite_url()
, pero estarías equivocado . Ejecute su propia prueba y verá. (Puede colocar temporalmente unecho H1
campo consite_url()
yhome_url()
valores en la parte superior de las funciones.php de su tema).Mientras tanto, hace
site_url()
referencia al campo con la etiqueta "Dirección de WordPress (URL)" en General> Configuración.Entonces, 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 esos: mira
plugins_url()
yget_template_directory_uri()
.El
site_url()
siempre va a ser el lugar donde se puede llegar al sitio por viradas en/wp-admin
la final, mientras quehome_url()
no sería fiable esta ubicación.El
home_url()
sería el caso en que haya establecido la página de inicio mediante el establecimiento de General> Configuración "Sitio de direcciones (URL)" sobre el terreno.Pregunta 2
Entonces, si coloqué mi blog
http://example.com/blog
yexample.com
es solo un sitio estático donde tengo 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:fuente
Si desea instalar WP en un directorio pero el sitio está en la raíz de su dominio, debe mover el archivo index.php principal a la raíz de su dominio y editar la instrucción require para que apunte dentro de su directorio.
Este proceso se describe aquí: dar a WordPress su propio directorio .
fuente
home_url()
ya que estoy en el modo de red wp. Solo le di a WordPress su propio directorio una vez y simplemente no fue de mi agrado. Pero sí uso elwp_content_dir
en algunos sitios.home/usr/public_html/site1
home/usr/public_html/site2
y así sucesivamente ywp_content_dir
generalmente está en unTLDR:
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 del dominio (raíz) de su sitio, sin agregar el nombre del subdirectorio:
(es decir,
www.example.com
vswww.example.com/wordpress
):Donde el valor de una constante WP tiene prioridad sobre un valor de wp_options / WP Settings.
Diferentes configuraciones para WordPress
En la mayoría de los estándares instalaciones de WordPress,
home_url
ysite_url
tendrá el mismo valor.En cualquier caso, representan dos cosas diferentes.
En una instalación no estándar , pueden tener valores diferentes.
(
//
es elrelative
protocolo y funcionará para cualquiera / amboshttp://
ohttps://
)Instalaciones estándar (incluidas las instalaciones de "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 los 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 porción de WordPress (blog) del sitio web de su servidor.
Ejemplo 1:
el usuario tiene acceso 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 tiene acceso a su blog en:
www.example.com/blog
,archivos de wordpress instalado en:
www.example.com/blog
o en lablog
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, ywww.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 no está controlado, definido o diseñado por WordPress.
Solo tu blog es. Todas las URL en tu blog serán procesadas por
www.example.com/blog
Nota: En la documentación, "sitio / sitio web de Wordpress" (en lugar de simplemente "sitio / sitio web") se refiere al directorio donde están instalados sus archivos de WordPress. En este caso, lo es
www.example.com/blog
: todo dentro de lablog
carpeta. El "sitio web de WordPress", en este escenario, no es lo 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 ya que la terminología puede parecer poco clara o confusa, dada esta configuración 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 estuvieran instalados en la raíz de la raíz del servidor del sitio web.
Esto es particularmente cierto cuando WordPress se utiliza 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á "fuera de la caja" simplemente cambiando los valores de estas variables. Requiere cambios de configuración adicionales para funcionar correctamente).
Vea Cómo dar a WordPress su propio directorio , la sección titulada
Method II (With URL change)
sobre cómo hacer esto.En este caso
home_url
ysite_url
debe contener diferentes valores.En esta configuración, usted quiere que su sitio web para funcionar exactamente como si se instalan los archivos de WordPress en el directorio raíz del servidor para su sitio web ...
PERO, por razones de organización en el servidor,
que en realidad tiene sus archivos de WordPress en una carpeta llamada
wordpress
en el servidor de directorio raíz para su sitio web.Entonces, el usuario escribirá
www.example.com
para obtener su página de inicio de WordPress, en lugar dewww.example.com/wordpress
función wordpress <--> variable de base de datos <--> Wordpress Constant
(Los otros casos son triviales: todas las variables / funciones mantienen / devuelven el mismo valor).
Cómo establecer los valores parasite_url
yhome_url
Primero, permítanme señalar que
siteurl
yhome
almacenar valores devueltos por las funciones anteriores1) Normalmente establece estos valores en el backend / panel de control / panel de administración de
Settings -> General ->
siteurl
WordPress: Dirección de WordPress:https://www.example.com/wordpress
home
Dirección del sitio:https://www.example.com
(no incluya barras inclinadas aquí, eso se configuraría en otro lugar)
2) Alternativamente, establece estos valores en su base de datos de WordPress:
wp_options
tabla ->(no incluya barras inclinadas aquí, eso se configuraría en otro lugar)
3) Edite su
wp-config.php
Definir estas constantes específicas para mantener sus valores
Definir
WP_HOME
yWP_SITEURL
configuraciones insertando estas líneas hacia la parte superior de suwp-config.php
archivo:(no incluya barras inclinadas aquí, eso se configuraría en otro lugar)
Referencia: WP_SITEURL y WP_HOME
NOTA: Esto es confuso
(realmente desearía que WordPress hubiera etiquetado la configuración de manera similar a sus nombres php,
como
Wordpress Site Address
y /Home Page Address
o algo más explícito comolocation of WordPress Site core files
ybrowser url to access WordPress home page
)Ahora aquí es donde se pone difícil!
SI definió esas constantes en su
wp-config.php
archivo, no importa qué valores tenga en su página de base de datos / configuración.De hecho, no podrá modificar este valor a través del back-end (estará atenuado). Todavía 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.
Su archivo de configuración no cambiará los valores en su base de datos (o, por lo tanto, su página de configuración). En cambio, se ignorarán los valores de su página de base de datos / configuración . Los valores en wp-config anulan o tienen prioridad sobre la configuración de su base de datos.
Entonces ... para concluir (TLDR):
Donde el valor de una constante WP tiene prioridad sobre un valor de wp_options / WP Settings.
El valor de registro de wp_options y el valor de Configuración de WP son los mismos.
Editar uno, por definición, 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 de db.
Si se define una constante en wp-config, no cambia la base de datos.
Pero internamente, WordPress siempre preferirá / usará su valor en lugar del db.
fuente
Las funciones
site_url()
yhome_url()
son similares y pueden generar confusión en su funcionamiento.La
site_url()
función recupera el valor del valor desiteurl
lawp_options
tabla en su base de datos.Esta es la URL de los archivos principales de WordPress.
Si sus archivos principales existen en un subdirectorio
/wordpress
en su servidor web, el valor seríahttp://example.com/wordpress
.La
home_url()
función recupera el valor dehome
lawp_options
tabla en su base de datos.Esta es la dirección que desea que las personas visiten para ver su sitio web de WordPress.
Si existen los archivos del núcleo de WordPress en
/wordpress
, pero usted quiere que su URL del sitio web para serhttp://example.com
el valor de la vivienda debe serhttp://example.com
.fuente
Para responder a su segunda pregunta:
No puede, a menos que tome Giving WordPress sus propios pasos en el directorio . Usar esto significa que coloca los archivos principales de WordPress en
/blog
o/WordPress
y luegoindex.php
en su raíz.Si decide colocar WordPress dentro de su propio directorio, lo usaría
home_url()
para irindex.php
ysite_url()
obtener archivos principales y demás.Referencias:
Codex para
site_url
Codex para
home_url
Codex para dar el propio directorio de Wordpress
fuente
La forma más fácil de obtener la URL del sitio sin ningún subdirectorio ( http://example.com/ en lugar de http://example.com/blog ), simplemente use la barra invertida /
Por ejemplo, si escribe:
Creará un enlace que va a tu dominio
fuente
/
por este sitio, en un sitio diferente, OP puede esperar que se devuelva un subdirectorio. Depende de la configuración de WP para cada sitio.