Existe-t-il une fonction WP pour obtenir automatiquement l'URL correcte de la page en cours? Cela signifie que si je viens d'ouvrir un seul article, la fonction retourne la même chose que get_permalink()
, mais si je suis sur une instance paginée d'une page (lors de la pagination dans les commentaires), la fonction retourne la même chose que get_pagenum_link(get_query_var('paged'))
.
J'ai cherché le codex mais n'ai pas trouvé ce que je cherchais. (Mais même get_pagenum_link()
n'y est pas documenté.)
Je connais cette fonction déjà, mais je serais heureux s'il y avait une fonction "native" WP qui fait le travail.
Merci d'avance! Cordialement, René
En plus de la réponse de Rajeev Vyas, vous n'avez pas besoin de passer de paramètre non vide à 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 sur $_SERVER[ 'REQUEST_URI' ]
et lui applique urlencode_deep()
. Voir https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
Edit: Comme $_SERVER[ 'REQUEST_URI' ]
représente une entrée utilisateur non filtrée, il convient de toujours échapper à la valeur de retour de add_query_arg()
lorsque le contexte est modifié. Par exemple, utilisez esc_url_raw()
pour l’utilisation de la base de données ou esc_attr()
ou esc_url()
pour HTML.
Mise à jour
L'exemple présenté qui devrait créer un URI absolu (contenant un schéma et un hôte) ne fonctionne pas sur un multisite avec des sous-répertoires, car home_url()
renverrait l'URI complet, segment de chemin compris. Voici une meilleure solution pour le code multisite sensible:
// 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 suffire.
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );
Pas une fonction, mais en utilisant du code wordpress ..
1) $_SERVER['REQUEST_URI']
- Il renvoie l'URL pour accéder à la page qui exécute le script. Si vous devez taper http://www.example.com/product.php?id=5
pour accéder à la page, $_SERVER['REQUEST_URI']
renvoie /product.php?id=5
.
2) $_SERVER['DOCUMENT_ROOT']
- Retourne le répertoire racine du serveur spécifié dans le fichier de configuration du serveur. Cette variable renvoie généralement le chemin tel que /usr/yoursite/www
sous Linux et D:/xamps/xampp/htdocs
sous 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 retourne généralement le chemin comme example.com
lorsque vous trouvez http://example.com
dans la barre d’adresse du navigateur et renvoyez www.example.com
lorsque vous voyez http://www.example.com
dans la barre d’adresse. Ceci est très utile lorsque vous souhaitez conserver la session tout en effectuant un paiement en ligne en utilisant PHP, car la session stockée pour http://example.com
n’est pas la même que pour le http://www.example.com
.
4) $_SERVER['HTTP_USER_AGENT']
- Renvoie les détails de l’agent utilisateur (navigateur) accédant à la page Web. Nous pouvons utiliser strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
pour détecter Microsoft Internet Explorer ou vous pouvez utiliser strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
pour détecter le navigateur Firefox en PHP.
5) $_SERVER['PHP_SELF']
- Retourne le nom de fichier du script en cours d'exécution. Supposons que vous accédiez à l’URL http://www.example.com/product.php?id=5
puis $_SERVER['PHP_SELF']
renvoie /product.php
dans votre script.
6) $_SERVER['QUERY_STRING']
- Renvoie la chaîne de requête si celle-ci 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 renvoie id=5&page=product
dans votre script.
7) $_SERVER['REMOTE_ADDR']
- Retourne l'adresse IP de la machine distante accédant à la page en cours. Mais vous ne pouvez pas vous relâcher sur $_SERVER['REMOTE_ADDR']
pour obtenir la véritable adresse IP de la machine du client. Consultez cet article pour savoir comment obtenir de véritables adresses IP en PHP.
8) $_SERVER['SCRIPT_FILENAME']
- Retourne le chemin absolu du fichier en cours d'exécution. Il retourne un chemin comme var/example.com/www/product.php
sous Linux et un chemin comme D:/xampp/xampp/htdocs/test/example.php
sous Windows.
Pour moi, <?php esc_url(the_permalink()); ?>
fonctionne (sur une page d'archive avec une pagination).
add_query_args( null, null )
créera un élément de tableau avec une clé vide ($qs[""] = null
) bien que cela n’affectera pas le résultat.
Selon add_query_arg () | Fonction | Ressources de développement WordPress , les deuxième et troisième paramètres sont facultatifs et peuvent être omis.
add_query_args( null, null )
peut être plus court .
$current_url = add_query_args( [] );
Il y a aussi la version la plus courte bien que cela ne soit pas recommandé car le 1er paramètre est le paramètre requis.
$current_url = add_query_args();
De plus, notez que home_url( add_query_vars( [] ) )
et home_url( add_query_arg( null, null ) )
risquent de ne pas renvoyer l'URL réelle lorsque WordPress est installé dans un sous-répertoire.
par exemple. https://example.com/wp/wp/foo
peut être renvoyé lorsque WordPress est installé dans https://example.com/wp/
.
Mise à jour: 2017/01/23
Ma version basée sur la solution de David pour obtenir une URL absolue.
$parts = parse_url(home_url());
$uri = $parts['scheme'] . '://' . $parts['Host'];
if (array_key_exists('port', $parts)) {
$uri .= ':' . $parts['port'];
}
$uri .= add_query_arg([]);
wp_guess_url est ce que vous recherchez.
Devinez l'URL du site.
Supprime les liens wp-admin pour récupérer uniquement les URL de retour qui ne se trouvent pas dans le répertoire wp-admin.