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.
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 ) );
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.
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.
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();
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 ) )