Comment afficher l'URL de la page actuelle?

37

Je souhaite ajouter du code PHP personnalisé pour m'assurer que chaque fois qu'une page de mon site se charge dans mon navigateur, l'URL de cette page est répercutée à l'écran. Je peux utiliser echo get_permalink() , mais cela ne fonctionne pas sur toutes les pages. Certaines pages (par exemple, ma page d'accueil ) affichent plusieurs messages. Si j'utilise get_permalink() sur ces pages, l'URL de celui-ci s'affiche. page n'est pas renvoyée (je crois qu'elle renvoie l'URL du dernier message de la boucle). Pour ces pages, comment puis-je renvoyer l'URL?

Puis-je attacher get_permalink() à un hook particulier qui se déclenche avant l'exécution de la boucle? Ou puis-je en quelque sorte sortir de la boucle, ou le réinitialiser une fois terminé?

Merci.

    
posée cag8f 25.07.2017 - 13:37

4 réponses

54

get_permalink() n'est vraiment utile que pour les pages simples et les publications, et ne fonctionne que dans la boucle.

La façon la plus simple que j'ai vue est la suivante:

global $wp;
echo home_url( $wp->request )

$wp->request inclut la partie chemin de l'URL, par exemple. /path/to/page et home_url() renvoie l'URL dans Paramètres > Général, mais vous pouvez y ajouter un chemin. Nous ajoutons donc le chemin de requête à l'URL d'accueil dans ce code.

Notez que cela ne fonctionnera probablement pas avec Permalinks défini sur Plain et laissera les chaînes de requête (la partie ?foo=bar de l'URL).

    
réponse donnée Jacob Peattie 25.07.2017 - 14:00
6

Vous pouvez utiliser le code ci-dessous pour obtenir l'URL complète actuelle dans wordpress

global $wp;  
$current_url = home_url(add_query_arg(array(),$wp->request));

Ceci affichera le chemin complet, y compris les paramètres de requête

    
réponse donnée rescue1155 05.04.2018 - 12:11
0

C’est un exemple plus perfectionné que celui mentionné précédemment. Cela fonctionne lorsque de jolies URL sont activées, mais il est ignoré s'il existe un paramètre de requête tel que / page-slug /? Param = 1 ou si l'URL est moche.

L'exemple suivant fonctionnera dans les deux cas.

    $query_args = array();

    $query = wp_parse_url( $YOUR_URL );

    $permalink = get_option( 'permalink_structure' );

    if ( empty( $permalink ) ) {

        $query_args = $query['query'];

    }

    echo home_url( add_query_arg( $query_args , $wp->request ) )
    
réponse donnée tolginho 11.06.2018 - 18:08
0
function current_location()
{
    if (isset($_SERVER['HTTPS']) &&
        ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
        isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
        $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
        $protocol = 'https://';
    } else {
        $protocol = 'http://';
    }
    return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

echo current_location();
    
réponse donnée Shree Sthapit 29.11.2018 - 11:32

Lire d'autres questions sur les étiquettes