web-dev-qa-db-fra.com

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

Si j'ai bien compris, site_url() renvoie l'emplacement où se trouvent les fichiers core de wordpress.

Donc, si mon blog est hébergé à 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 obtenir WordPress pour renvoyer http://example.com/?

59
Praveen

Vous posez deux questions à la fois:

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

Voici les réponses que j'ai confirmées avec Andrew Nacin, un développeur principal de WordPress, et j'ai également effectué des tests de serveur pour confirmer ce que Andrew m'a dit.

Question 1

Dans Général> Paramètres de wp-admin, home_url() fait référence au champ intitulé "Adresse du site (URL)". Confus, hein? Ouais, il est écrit "Adresse du site", vous pouvez donc supposer que site_url(), mais vous auriez tort . 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 functions.php de votre thème.)

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

Donc, si vous voulez indiquer un chemin physique, par exemple appeler le chemin du dossier d'un plugin sur l'URL pour charger une image, ou appeler le chemin du dossier d'un thème pour charger une image, vous devez utiliser d'autres fonctions pour ces - Regardez plugins_url() et get_template_directory_uri().

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

La home_url() correspond à l'emplacement où vous avez défini votre page d'accueil en définissant le champ Général> Paramètres "Adresse du site (URL)".

Question 2

Donc, si j'ai placé mon blog dans http://example.com/blog, et example.com est juste un site statique où j'ai un thème de portefeuille, alors ce serait un scénario qui correspond à votre question. Dans un tel cas, j'utiliserais alors 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;
}
48
Volomike

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 afin qu'elle pointe dans votre répertoire.

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

7
Milo

Pour répondre à votre deuxième question:

Q: Si cela est correct, puis-je obtenir que wordpress renvoie http://example.com/ ?

Vous ne pouvez pas, sauf si vous prenez Donner à WordPress son propre répertoire steps. Cela signifie que vous placez les fichiers de base de WordPress dans /blog ou /WordPress, puis le index.php à la 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() pour obtenir les fichiers de base, etc.

Références:
Codex for site_url
Codex for home_url
Codex pour la création d'un répertoire propre à Wordpress

2
xLRDxREVENGEx

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 de siteurl dans la table wp_options de votre base de données.
Ceci est l'URL des fichiers de base de 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 de votre base de données.
Ceci est l'adresse que vous voulez que les gens visitent pour voir 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 base doit être http://example.com.

2
Nanhe Kumar