Obtenir l'URL de la page actuelle (y compris la pagination)

12

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 post, 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 ferait 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'est pas documenté ici.)

Je connais déjà cette fonction , mais je serais heureux s'il existait une fonction WP "native" qui le fait le travail.

Merci d'avance! Cordialement, René

    
posée René Schubert 31.01.2013 - 23:05

8 réponses

22

En plus de la réponse de Rajeev Vyas, vous n'avez pas besoin de transmettre 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 sur $_SERVER[ 'REQUEST_URI' ] et lui applique urlencode_deep() . Voir enlace

.

Modifier: Comme $_SERVER[ 'REQUEST_URI' ] représente une entrée utilisateur non filtrée, vous devez 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.

Mettre à jour

L'exemple présenté qui devrait créer un URI absolu (contenant un schéma et un hôte) ne fonctionne pas avec les multisites avec des sous-répertoires, car home_url() renvoie 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 de 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.

    
réponse donnée David 15.12.2013 - 13:04
3
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

Pas une fonction, mais utiliser définitivement du code wordpress.

enlace

    
réponse donnée Rajeev Vyas 01.02.2013 - 07:17
0

1) $_SERVER['REQUEST_URI'] - 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'] - Retourne le nom de l'hôte tel qu'il est trouvé dans l'en-tête http. Cette variable renvoie généralement le chemin tel que example.com lorsque vous trouvez http://example.com dans la barre d’adresse du navigateur et que vous 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 une session tout en effectuant un paiement en ligne avec PHP car la session stockée pour http://example.com n’est pas identique à celle de http://www.example.com .

4) $_SERVER['HTTP_USER_AGENT'] - Renvoie les détails de l'agent d'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 que $_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. Voir 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 dans Windows.

    
réponse donnée Foxsk8 02.02.2014 - 21:49
0

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.

    
réponse donnée Jesse 11.03.2013 - 11:15
0

add_query_args( null, null ) va créer 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 | Ressources de développement WordPress , les 2ème et 3ème paramètres sont facultatifs et peuvent être omis.

add_query_args( null, null ) peut être plus court .

$current_url = add_query_args( [] );

Il existe également la version la plus courte , bien que cela ne soit pas recommandé, car le premier 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 ) ) peuvent 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 est 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([]);
    
réponse donnée Whizark 29.08.2016 - 18:35
0

Pour moi, <?php esc_url(the_permalink()); ?> fonctionne (sur une page d'archive avec une pagination).

    
réponse donnée Henning Fischer 06.02.2017 - 09:56
-1

Je ne fais pas maintenant de pagination mais Vous pouvez utiliser cette fonction pour obtenir l'URL dans la boucle

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>

Sinon, 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)

$(document).ready(function () {
var vhref = $(location).attr('href');
var vTitle = $(this).attr('title');
$('#spnTitle').html('' + vTitle + '');
$('#spnURL').html('' + vhref + '');
});​

ou si vous préférez utiliser la fonction php, vous devez obtenir l'id en dehors de la boucle

    
réponse donnée vaibhav 01.02.2013 - 06:55
-2

Vous pouvez utiliser la fonction wordpress pour obtenir l'URL de la page actuelle

the_permalink()

Cela vous renverra le lien URL de la page actuelle.

    
réponse donnée Vivek Pandey 26.02.2014 - 11:15

Lire d'autres questions sur les étiquettes