¿Cuál es la diferencia entre home_url () y site_url ()

53

Entiendo que site_url() devuelve la ubicación donde se encuentran los archivos principales de wordpress.

Entonces, si mi blog está alojado en http://example.com/blog entonces site_url() devuelve http://example.com/blog

Pero entonces, ¿cómo difiere home_url() ? Para mí, home_url() devuelve lo mismo: http://example.com/blog

Si eso es correcto, ¿puedo hacer que wordpress devuelva http://example.com/ ?

    
pregunta Praveen 17.06.2011 - 20:07

5 respuestas

43

Estás haciendo dos preguntas a la vez:

  1. ¿Cuál es la diferencia entre home_url() y site_url() ?
  2. ¿Cómo consigo que WordPress devuelva la raíz del URL sin el subdirectorio donde está instalado?

Aquí están las respuestas, y confirmé con Andrew Nacin, un desarrollador central de WordPress, además de realizar algunas pruebas de servidor para confirmar lo que Andrew me dijo.

Pregunta # 1

En General > La configuración de wp-admin, home_url() hace referencia al campo etiquetado "Dirección del sitio (URL)". Confuso, ¿eh? Sí, dice "Dirección del sitio", por lo que podría asumir site_url() , pero estaría equivocado . Ejecuta tu propia prueba y ya verás. (Puedes eliminar temporalmente un campo echo H1 con los valores site_url() y home_url() en la parte superior de las funciones de tu tema.php.)

Mientras tanto, site_url() hace referencia al campo etiquetado "Dirección de WordPress (URL)" en General > Ajustes.

Por lo tanto, si desea hacer referencia a una ruta física tal 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, debería usar otras funciones. para esos, mira plugins_url() y get_template_directory_uri() .

El site_url() siempre será la ubicación donde se puede llegar al sitio al agregar /wp-admin al final, mientras que home_url() no sería de manera confiable esta ubicación.

El home_url() sería donde configuró su página de inicio configurando General > Configuración del campo "Dirección del sitio (URL)".

Pregunta # 2

Entonces, si he colocado mi blog en http://example.com/blog , y example.com es solo un sitio estático en el que tengo un tema de cartera, entonces este sería un escenario que se alinea con su pregunta. En tal caso, entonces usaría este fragmento de código:

<?php
function getDomain() {
    $sURL    = site_url(); // WordPress function
    $asParts = parse_url( $sURL ); // PHP function

    if ( ! $asParts )
      wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result

    $sScheme = $asParts['scheme'];
    $nPort   = $asParts['port'];
    $sHost   = $asParts['host'];
    $nPort   = 80 == $nPort ? '' : $nPort;
    $nPort   = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort;
    $sPort   = ! empty( $sPort ) ? ":$nPort" : '';
    $sReturn = $sScheme . '://' . $sHost . $sPort;

    return $sReturn;
}
    
respondido por el Volomike 30.04.2012 - 02:54
7

Si desea que WP esté instalado en un directorio, pero en el sitio principal de su raíz de dominio, debe mover el archivo index.php principal a la raíz de su dominio y editar la declaración requerida para que apunte dentro de su directorio.

Este proceso se describe aquí: Dando a WordPress su propio directorio .

    
respondido por el Milo 17.06.2011 - 20:12
2

Para responder a tu segunda pregunta:

  

P: Si eso es correcto, entonces ¿puedo hacer que wordpress devuelva enlace ?

No puede, a menos que tome los Dando a WordPress su propio directorio pasos. Usando esto, significa que coloca los archivos principales de WordPress en /blog o /WordPress y luego index.php en su raíz.

Si decides poner WordPress dentro de su propio directorio, entonces usarías home_url() para ir a index.php y site_url() para obtener archivos básicos y demás.

Referencias:
Codex para site_url
Codex para home_url
Codex para dar a Wordpress Directorio propio

    
respondido por el xLRDxREVENGEx 17.06.2011 - 20:37
1

Las funciones site_url() y home_url() son similares y pueden llevar a confusión en la forma en que funcionan. La función site_url() recupera el valor establecido en el valor de la tabla wp_options para siteurl 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ía http://example.com/wordpress . La función home_url() recupera el valor para el hogar en la tabla wp_options . Esta es la dirección que desea que la gente visite para ver su sitio web de WordPress. Si sus archivos principales de WordPress existen en /wordpress , pero desea que la URL de su sitio web sea http://example.com , el valor de inicio debe ser http://example.com .

    
respondido por el Nanhe Kumar 17.04.2013 - 09:41
-1

La forma más fácil de obtener la URL del sitio sin ningún subdirectorio ( enlace en lugar de enlace ), solo use la barra invertida /

Por ejemplo, si escribe:

<a href="/">domain url</a>

Creará un enlace que va a su dominio

    
respondido por el jake 05.05.2016 - 11:12

Lea otras preguntas en las etiquetas