Quelle est la différence entre home_url () et site_url ()?

53

D'après ce que j'ai compris, site_url() renvoie l'emplacement où se trouvent les fichiers core de wordpress.

Ainsi, si mon blog est hébergé sur http://example.com/blog , alors site_url() renvoie http://example.com/blog

Mais alors comment home_url() diffère-t-il? Pour moi, home_url() renvoie la même chose: http://example.com/blog

Si cela est correct, puis-je demander à wordpress de renvoyer http://example.com/ ?

    
posée Praveen 17.06.2011 - 20:07
la source

5 réponses

43

Vous posez deux questions à la fois:

  1. Quelle est la différence entre home_url() et site_url() ?
  2. Comment faire pour que WordPress renvoie la racine de l'URL sans le sous-répertoire où il est installé?

Voici les réponses que j'ai confirmées avec Andrew Nacin, l'un des principaux développeurs de WordPress, ainsi que des tests de serveur pour confirmer ce que m'a dit Andrew.

Question n ° 1

En général > Les paramètres de wp-admin, home_url() font référence au champ intitulé "Adresse du site (URL)". Confus, hein? Oui, il est indiqué "Adresse du site". Vous pouvez donc supposer site_url() , mais vous vous trompez . Faites votre propre test et vous verrez. (Vous pouvez supprimer temporairement un champ echo H1 avec les valeurs site_url() et home_url() en haut du fichier functions.php de votre thème.)

Parallèlement, site_url() fait référence au champ "Adresse WordPress (URL)" dans Général > Paramètres.

Ainsi, si vous souhaitez indiquer un chemin physique, par exemple en appelant le chemin du dossier d'un plugin sur l'URL pour charger une image ou en appelant le chemin du dossier d'un thème pour charger une image, vous devez utiliser d'autres fonctions. pour ceux-là, regardez plugins_url() et get_template_directory_uri() .

Le site_url() sera toujours le lieu où vous pourrez accéder au site en misant sur /wp-admin à la fin, alors que home_url() ne serait pas cet emplacement de manière fiable.

Le home_url() serait l'endroit où vous avez défini votre page d'accueil en définissant Général > Paramètres "Adresse du site (URL)".

Question n ° 2

Ainsi, si j'ai placé mon blog dans http://example.com/blog et que example.com n'est qu'un site statique dans lequel j'ai un thème de portefeuille, ce scénario correspond à votre question. Dans ce cas, j'utiliserais cet extrait de code:

<?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;
}
    
réponse donnée Volomike 30.04.2012 - 02:54
la source
7

Si vous voulez que WP soit installé dans un répertoire mais que le site principal se trouve à la racine de votre domaine, vous devez déplacer le fichier principal index.php vers la racine de votre domaine et modifier l'instruction Required de manière à ce qu'elle pointe dans votre répertoire.

Ce processus est décrit ici: Donner à WordPress son propre répertoire .

    
réponse donnée Milo 17.06.2011 - 20:12
la source
2

Pour répondre à votre deuxième question:

  

Q: Si c'est le cas, puis-je obtenir que wordpress renvoie le enlace ?

Vous ne pouvez pas, sauf si vous suivez les étapes Donner à WordPress son propre répertoire . Cela signifie que vous placez les fichiers de base de WordPress dans /blog ou /WordPress , puis dans index.php dans votre racine.

Si vous décidez de placer WordPress dans son propre répertoire, vous utiliserez home_url() pour accéder à index.php et site_url() à la recherche de fichiers de base et autres.

Références:
Codex pour site_url
Codex pour home_url
Codex permettant de créer un répertoire propre à Wordpress

    
réponse donnée xLRDxREVENGEx 17.06.2011 - 20:37
la source
1

Les fonctions site_url() et home_url() sont similaires et peuvent entraîner une confusion dans leur fonctionnement. La fonction site_url() récupère la valeur définie dans la valeur de table wp_options pour siteurl dans votre base de données. Ceci est l'URL des fichiers de base WordPress. Si vos fichiers core existent dans un sous-répertoire /wordpress sur votre serveur Web, la valeur serait http://example.com/wordpress . La fonction home_url() récupère la valeur de home dans la table wp_options . C'est l'adresse à laquelle vous souhaitez que les gens se rendent pour consulter votre site Web WordPress. Si vos fichiers principaux WordPress existent dans /wordpress , mais que vous voulez que l'URL de votre site Web soit http://example.com , la valeur de la maison doit être http://example.com .

    
réponse donnée Nanhe Kumar 17.04.2013 - 09:41
la source
-1

Le moyen le plus simple d’obtenir l’URL du site sans sous-répertoires ( enlace au lieu de enlace ), utilisez simplement la barre oblique inverse /

Par exemple, si vous tapez:

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

Cela créera un lien vers votre domaine

    
réponse donnée jake 05.05.2016 - 11:12
la source

Lire d'autres questions sur les étiquettes