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/blogentonces 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 H1campo 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-adminla 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/blogyexample.comes 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_diren algunos sitios.home/usr/public_html/site1home/usr/public_html/site2y así sucesivamente ywp_content_dirgeneralmente 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.comvswww.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_urlysite_urltendrá el mismo valor.En cualquier caso, representan dos cosas diferentes.
En una instalación no estándar , pueden tener valores diferentes.
(
//es elrelativeprotocolo 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.como 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/blogo en lablogcarpeta dentro de la raíz de su sitio web.home_url===site_url==="www.example.com/blog"En este caso
www.example.comes el sitio web principal, ywww.example.com/bloges 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/blogNota: 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 lablogcarpeta. 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/wordpresso 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_urlysite_urldebe 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
wordpressen el servidor de directorio raíz para su sitio web.Entonces, el usuario escribirá
www.example.compara obtener su página de inicio de WordPress, en lugar dewww.example.com/wordpressfunció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_urlyhome_urlPrimero, permítanme señalar que
siteurlyhomealmacenar valores devueltos por las funciones anteriores1) Normalmente establece estos valores en el backend / panel de control / panel de administración de
Settings -> General ->siteurlWordPress: Dirección de WordPress:https://www.example.com/wordpresshomeDirecció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_optionstabla ->(no incluya barras inclinadas aquí, eso se configuraría en otro lugar)
3) Edite su
wp-config.phpDefinir estas constantes específicas para mantener sus valores
Definir
WP_HOMEyWP_SITEURLconfiguraciones insertando estas líneas hacia la parte superior de suwp-config.phparchivo:(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 Addressy /Home Page Addresso algo más explícito comolocation of WordPress Site core filesybrowser url to access WordPress home page)Ahora aquí es donde se pone difícil!
SI definió esas constantes en su
wp-config.phparchivo, 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 desiteurllawp_optionstabla en su base de datos.Esta es la URL de los archivos principales de WordPress.
Si sus archivos principales existen en un subdirectorio
/wordpressen su servidor web, el valor seríahttp://example.com/wordpress.La
home_url()función recupera el valor dehomelawp_optionstabla 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.comel 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
/blogo/WordPressy luegoindex.phpen su raíz.Si decide colocar WordPress dentro de su propio directorio, lo usaría
home_url()para irindex.phpysite_url()obtener archivos principales y demás.Referencias:
Codex para
site_urlCodex para
home_urlCodex 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.