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/
?
Vous posez deux questions à la fois:
home_url()
et site_url()
?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.
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)".
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;
}
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 .
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
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
.