En plus de la réponse de Rajeev Vyas, vous n'avez pas besoin de passer de paramètres non vides à add_query_arg()
. Ce qui suit a toujours bien fonctionné pour moi:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
La fonction retombe $_SERVER[ 'REQUEST_URI' ]
et s'applique urlencode_deep()
à elle. Voir https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
Modifier:
comme $_SERVER[ 'REQUEST_URI' ]
représente une entrée utilisateur non filtrée, il faut toujours échapper la valeur de retour add_query_arg()
lorsque le contexte est modifié. Par exemple, utilisez esc_url_raw()
pour une utilisation DB ou esc_attr()
ou esc_url()
pour HTML.
Mise à jour
L'exemple illustré qui devrait créer un URI absolu (contenant le schéma et l'hôte) ne fonctionne pas sur un multisite avec des sous-répertoires, car home_url()
cela retournerait l'URI complet, y compris un segment de chemin. Une meilleure solution pour le code multisite serait la suivante:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
Le noyau WordPress ne prend pas en charge le port, l'utilisateur ou le mot de passe dans une URL de site multisite, cela devrait donc être suffisant.
Pas une fonction, mais certainement en utilisant le code wordpress ..
http://kovshenin.com/2012/current-url-in-wordpress/
la source
year
sont ajoutés à la chaîne de requête, même s'ils n'y étaient pas auparavant, et d'autres paramètres, par exemple lereplytocom
paramètre, sont perdus. Connaissez-vous une solution à cela?1)
$_SERVER['REQUEST_URI']
- Il renvoie l'URL pour accéder à la page qui exécute le script. Si vous devez taperhttp://www.example.com/product.php?id=5
pour accéder à la page, puis$_SERVER['REQUEST_URI']
revient/product.php?id=5
.2)
$_SERVER['DOCUMENT_ROOT']
- Renvoie le répertoire racine du serveur qui est spécifié dans le fichier de configuration du serveur. Cette variable renvoie généralement le chemin d'accès comme/usr/yoursite/www
sous Linux etD:/xamps/xampp/htdocs
dans Windows.3)
$_SERVER['HTTP_HOST']
- Renvoie le nom de l'hôte tel qu'il se trouve dans l'en-tête http. Cette variable renvoie généralement le chemin d'accès commeexample.com
lorsque vous le trouvezhttp://example.com
dans la barre d'adresse du navigateur et retournewww.example.com
lorsque vous le voyezhttp://www.example.com
dans la barre d'adresse. Ceci est très utile lorsque vous devez conserver la session tout en effectuant un paiement en ligne en utilisant PHP car la session stockée pourhttp://example.com
n'est pas la même que pour lehttp://www.example.com
.4)
$_SERVER['HTTP_USER_AGENT']
- Renvoie les détails de l'agent utilisateur (navigateur) accédant à la page Web. Nous pouvons utiliserstrpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
pour détecter Microsoft Internet Explorer ou vous pouvez utiliserstrpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
pour détecter le navigateur Firefox en PHP.5)
$_SERVER['PHP_SELF']
- Renvoie le nom de fichier du script en cours d'exécution. Supposons que vous accédez à l'URL,http://www.example.com/product.php?id=5
puis$_SERVER['PHP_SELF']
retourne/product.php
dans votre script.6)
$_SERVER['QUERY_STRING']
- Renvoie la chaîne de requête si la chaîne de requête est utilisée pour accéder au script en cours d'exécution. Les chaînes de requête sont celles qui sont disponibles après «?» sign.si vous utilisez$_SERVER['QUERY_STRING']
dans le script exécutant l'URL suivante,http://www.example.com/index.php?id=5&page=product
il retourneid=5&page=product
dans votre script.7)
$_SERVER['REMOTE_ADDR']
- Renvoie l'adresse IP de la machine distante accédant à la page actuelle. Mais vous ne pouvez pas$_SERVER['REMOTE_ADDR']
bénéficier de la véritable adresse IP de la machine du client. Consultez cet article pour savoir comment obtenir de véritables compléments IP en PHP.8)
$_SERVER['SCRIPT_FILENAME']
- Renvoie le chemin absolu du fichier en cours d'exécution. Il retourne le chemin commevar/example.com/www/product.php
sous Linux et le chemin commeD:/xampp/xampp/htdocs/test/example.php
sous Windows.la source
wp_guess_url est ce que vous recherchez.
la source
add_query_args( null, null )
créera un élément de tableau avec une clé vide ($qs[""] = null
) bien que cela n'affecte pas le résultat.Selon add_query_arg () | Fonction | WordPress Developer Resources , les 2e, 3e paramètres sont facultatifs et peuvent être omis.
add_query_args( null, null )
peut être plus court .Il existe également la version la plus courte bien qu'elle ne soit pas recommandée car le 1er paramètre est le paramètre requis.
De plus, notez que les deux
home_url( add_query_vars( [] ) )
ethome_url( add_query_arg( null, null ) )
peuvent ne pas retourner l'URL réelle lorsque WordPress est installé dans un sous-répertoire.par exemple,
https://example.com/wp/wp/foo
peut être retourné lorsque WordPress est installé danshttps://example.com/wp/
.Mise à jour: 23/01/2017
Ma version basée sur la solution de David pour obtenir une URL absolue.
la source
Pour moi
<?php esc_url(the_permalink()); ?>
fonctionne (sur une page d'archive avec pagination).la source
the_permalink()
fait écho au permalien échappé, il ne renvoie rien. Leesc_url()
n'obtient rien, et si c'est le cas, ce serait une URL d'échappement.Je n'ai pas maintenant de pagination mais vous pouvez utiliser cette fonction pour obtenir l'url dans la boucle
Ou bien si vous ne préférez pas utiliser php, vous pouvez également opter pour la méthode jquery ici (cela vous aidera à le faire fonctionner en dehors de la boucle)
ou si vous préférez utiliser la fonction php, vous devez obtenir l'id en dehors de la boucle
la source
the_permalink()
n'a pas besoin de l'ID lorsqu'il est appelé dans la boucle.Vous pouvez utiliser la fonction wordpress pour obtenir l'URL de la page actuelle
Cela vous renverra le lien URL de la page curremt.
la source
the_permalink()
va imprimer l'URL du poste actuel. Mais cela ne fonctionnera pas pour d'autres demandes et n'inclura pas de variables comme la pagination. Ce n'est donc pas vraiment la réponse que cherche René Schubert.