web-dev-qa-db-fra.com

Comment obtenir l'URL de la page actuelle affichée?

Je souhaite ajouter un code personnalisé PHP pour que, chaque fois qu'une page de mon site se charge dans mon navigateur, l'URL de cette page soit 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 publications et si j’utilise get_permalink() sur ces pages, l’URL de la page affichée 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 crochet particulier qui se déclenche avant que la boucle ne soit exécutée? Ou puis-je en quelque sorte sortir de la boucle, ou le réinitialiser une fois terminé?

Merci.

43
cag8f

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

La manière 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() affichent l'URL dans Paramètres> Général, mais vous pouvez y ajouter un chemin. Nous ajoutons donc le chemin de demande à l'URL de la maison dans ce code.

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

Pour obtenir l'URL lorsque les permaliens sont définis sur plain, vous pouvez utiliser $wp->query_vars à la place, en le passant à add_query_arg():

global $wp;
echo add_query_arg( $wp->query_vars, home_url() );

Et vous pouvez combiner ces deux méthodes pour obtenir l'URL actuelle, y compris la chaîne de requête, quels que soient les paramètres de permalien:

global $wp;
echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
71
Jacob Peattie

Vous pouvez utiliser le code ci-dessous pour obtenir l'URL actuelle dans WordPress:

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

Cela montrera le chemin complet, y compris les paramètres de requête.

6
rescue1155

Le code suivant donnera l'URL actuelle:

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

Vous pouvez utiliser le code ci-dessous pour obtenir l'URL complète avec les paramètres de requête.

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

Cela montrera le chemin complet, y compris les paramètres de requête. Cela préservera les paramètres de requête si déjà dans l'URL.

2
Adiyya Tadikamalla
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();
1
Shree Sthapit

C'est un moyen d'exemple amélioré que mentionné précédemment. Cela fonctionne lorsque les 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 ) )
0
tolginho