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 publications et si j’utilise get_permalink()
ces pages, l’URL de la page affichée ne sera 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 l'exécution de la boucle? Ou puis-je en quelque sorte sortir de la boucle, ou le réinitialiser une fois terminé?
Merci.
php
loop
permalinks
urls
cag8f
la source
la source
is_home()
ouis_page( 'fr' )
etc et ne mettre en file d'attente le script que si c'est vrai?if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}
Cela semble se déclencher sur toutes les pages d'accueil, quelle que soit la langue. Est-ce ce que vous suggérez?$_SERVER['REQUEST_URI']
et compagnie? Voir cette question: stackoverflow.com/q/6768793/247696Réponses:
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:
$wp->request
inclut la partie chemin de l'URL, par exemple./path/to/page
ethome_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 des chaînes de requête (la
?foo=bar
partie de l'URL).Pour obtenir l'URL lorsque les permaliens sont définis sur plain, vous pouvez utiliser ceux-ci
$wp->query_vars
, en les transmettant àadd_query_arg()
: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:
la source
echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
.echo home_url( $wp->request )
. Je me suis assuré d'inclureglobal $wp
également. Les permaliens ne sont pas «simples», mais définis sur «Nom du message». Je ne vois aucune erreur PHP pertinente dans le journal non plus. Cette page particulière fait partie de mon site de développement, qui est autrement bloqué pour les visiteurs. Je ne sais pas si cela compte ou non. edit: En fait, maintenez cette pensée - pourrait être une erreur de l'utilisateur. Entrailingslashit()
, en fonction de vos besoins.Vous pouvez utiliser le code ci-dessous pour obtenir l'URL complète actuelle dans WordPress:
Cela montrera le chemin complet, y compris les paramètres de requête.
la source
array()
par$_GET
. À savoir:home_url(add_query_arg($_GET,$wp->request));
la source
Le code suivant donnera l'URL actuelle:
Vous pouvez utiliser le code ci-dessous pour obtenir l'URL complète avec les paramètres de requête.
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.
la source
wp-admin/plugins.php
dans mon URL actuelle, il ne s'agit que du chemin racine et des chaînes de requête.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.
la source
C'est peut
wp_guess_url()
- être ce dont vous avez besoin. Disponible depuis la version 2.6.0.la source
home_url()
.Pourquoi ne pas simplement utiliser?
la source