Comment afficher l'URL de la page actuelle?
-
-
Pouvez-vousnousexpliquer ce que vous souhaiteriezfaire avec cette URL?Essayez-vous de créer des URLpartageables?Assembler des URLpersonnaliséespour les liens/actions?Can you provide some context as to what you would want to do with this URL? Are you trying to create sharable URLs? Assemble custom URLs for links/actions?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowell Je voudraismettreen file d'attente un script JSparticulier,mais uniquement sur certainespages (dans ce cas,cespages sont lapage d'accueil demon site dans différentes langues: https://www.example.com/,https://www.example.com/fr/,https://www.example.com/es/,etc.).Lefichier JS servira à ajouter des hyperliens versplusieurstitres quin'apparaissent que sur lapage d'accueil.@TomJNowell I would like to enqueue a particular JS script, but only on certain pages (in this case, those pages are the homepage of my site in various languages: https://www.example.com/, https://www.example.com/fr/, https://www.example.com/es/, etc). The JS file will server to add hyperlinks to several titles that appear only on the homepage.
- 0
- 2017-07-25
- cag8f
-
pourquoine pas simplement utiliser `is_home ()` ou `is_page ('fr')`etcet nemettreen file d'attente le script que si c'est vrai?why not just use `is_home()` or `is_page( 'fr' )` etc and only enqueue the script if it's true?
- 0
- 2017-07-25
- Tom J Nowell
-
@TomJNowell Ehbien maintenant,mon codeest `if (home_url ($ wp-> request)==home_url ()) {wp_enqueue_script ();}` Cela semble se déclencher sur chaquepage d'accueil,quelle que soit la langue.Est-ce ce que vousproposiez?@TomJNowell Well now my code is `if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}` This appears to fire on every home page, regardless of language. Is that what you were suggesting?
- 0
- 2017-07-26
- cag8f
-
Pourquoine pas utiliser `$ _SERVER ['REQUEST_URI']`et compagnie?Voir cette question: https://stackoverflow.com/q/6768793/247696Why not use `$_SERVER['REQUEST_URI']` and company? See this question: https://stackoverflow.com/q/6768793/247696
- 1
- 2019-05-29
- Flimm
-
10 réponses
- votes
-
- 2017-07-25
get_permalink()
n'est vraiment utile quepour lespageset les articles uniques,et nefonctionne que dans laboucle.Lafaçon laplus simple quej'ai vueest la suivante:
global $wp; echo home_url( $wp->request )
$wp->request
inclut lapartie chemin de l'URL,parexemple./path/to/page
ethome_url()
génère l'URL dans Paramètres> Général,mais vouspouvez y ajouter un chemin,nous ajoutons donc le chemin de la requête à l'URL d'accueil dans ce code.Notez que celane fonctionneraprobablementpas avec les lienspermanents définis sur Plain,et laissera les chaînes de requête (lapartie
?foo=bar
de l'URL).Pour obtenir l'URL lorsque lespermaliens sont définis surplain,vouspouvez utiliser
$wp->query_vars
à laplace,en lepassant àadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
Et vouspouvez combiner ces deuxméthodespour obtenir l'URL actuelle,y compris la chaîne de requête,quels que soient lesparamètres depermalien:
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
get_permalink()
is only really useful for single pages and posts, and only works inside the loop.The simplest way I've seen is this:
global $wp; echo home_url( $wp->request )
$wp->request
includes the path part of the URL, eg./path/to/page
andhome_url()
outputs the URL in Settings > General, but you can append a path to it, so we're appending the request path to the home URL in this code.Note that this probably won't work with Permalinks set to Plain, and will leave off query strings (the
?foo=bar
part of the URL).To get the URL when permalinks are set to plain you can use
$wp->query_vars
instead, by passing it toadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
And you could combine these two methods to get the current URL, including the query string, regardless of permalink settings:
global $wp; echo add_query_arg( $wp->query_vars, home_url( $wp->request ) );
-
Si lespermaliens sont définis surplain: `echo '//'.$ _SERVER ['HTTP_HOST'].$ _SERVER ['REQUEST_URI']; `.If permalinks set to plain: `echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`.
- 7
- 2017-07-25
- Max Yudin
-
@Jacob J'aiessayé cela,maisil semblene renvoyer que l'URL demapage d'accueil.Comme vouspouvez le voiren haut àgauche de cettepage (https://dev.horizonhomes-samui.com/properties/hs0540/),oùj'aiinséré le codepour `echo home_url ($ wp-> request)`.Jeme suis également assuré d'inclure «global $ wp».Lespermaliensne sontpas "simples",mais définis sur "Nom dumessage".Jene voispasnonplus d'erreurs PHPpertinentes dans lejournal.Cettepageparticulièrefaitpartie demon site de développement,quiest sinonbloqué aux visiteurs.Jene saispas si cela compte ounon.edit: Enfait,maintenez cettepensée -pourrait être uneerreur de l'utilisateur.Etreprêt...@Jacob I tried that, but it seems to be returning the URL of my homepage only. As you can see in the top left on this page (https://dev.horizonhomes-samui.com/properties/hs0540/), where I have inserted code to `echo home_url( $wp->request )`. I have ensured to include `global $wp` as well. Permalinks are not 'Plain,' but set to 'Post Name.' I don't see any relevant PHP errors in the log either. This particular page is part of my dev site, which is otherwise blocked off to visitors. I'm not sure if that matters or not. edit: Actually, hold that thought--could be user error. Stand by...
- 2
- 2017-07-25
- cag8f
-
@Jacobedit 2: OK,votre codefonctionnebien.Monproblème était quej'incluais le code dansfunctions.php ``nu '',c'est-à-dire dans aucunefonction attachée à un hook.Votre code renvoyait donc l'URL de lapage d'accueil,quelle que soit lapage affichée dansmonnavigateur.Unefois quej'ai déplacé le code dans unefonction - unefonction attachée à un hook WP (wp_enqueue_scripts),il aen effet renvoyé l'URL de lapage affichée.Connaissez-vous la raison de ce comportement?Peut-être quej'aibesoin de créer unenouvelle questionpour cela.@Jacob edit 2: OK your code does indeed work. My issue was that I was including the code in functions.php 'naked,' i.e. not in any function that is attached to a hook. So your code was returning the URL of the homepage, regardless of the page that was displayed in my browser. Once I moved the code inside a function--a function attached to a WP hook (wp_enqueue_scripts), it did indeed return the URL of the displayed page. Do you know the reason for that behavior? Maybe I need to create a new question for that.
- 1
- 2017-07-25
- cag8f
-
@ cag8f Si le code setrouve "nu" dansfunctions.php,alors vous l'exécutez avant quetoutes lespropriétés de l'objet $ wp aient été configurées.Lorsque vous l'enveloppez dans unefonction attachée à un hook approprié,vous retardez sonexécutionjusqu'à unpoint approprié dans l'exécution du code Wordpress.@cag8f If the code sits "naked" in functions.php then you are running it before all the properties of the $wp object have been set up. When you wrap it in a function attached to an appropriate hook then you are delaying its execution until a suitable point in the Wordpress code run.
- 3
- 2018-04-05
- Andy Macaulay-Brook
-
Cesméthodes sonttoutesgénialeset d'excellentesidéespourtravailler avec WordPress.Vouspouvez cependant leur ajouter `trailingslashit ()`,selon vosbesoins.These methods are all awesome, and great ideas for working with WordPress. You might add `trailingslashit()` to them though, depending on your needs.
- 0
- 2019-10-17
- Jake
-
- 2018-04-05
Vouspouvez utiliser le code ci-dessouspour obtenir l'intégralité de l'URL actuelle dans WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
Cela affichera le chemin complet,y compris lesparamètres de requête.
You may use the below code to get the whole current URL in WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
This will show the full path, including query parameters.
-
Salut - si vous regardez https://developer.wordpress.org/reference/functions/add_query_arg/,vous verrez que votre codene conservepas réellement lesparamètres de requêteexistants.Hi - if you have a look at https://developer.wordpress.org/reference/functions/add_query_arg/ you'll see that your code doesn't actually preserve existing query parameters.
- 0
- 2018-04-05
- Andy Macaulay-Brook
-
Pour conserver lesparamètres de requête,vous devez remplacer le vide `array ()`par `$ _GET`.c'est à dire: `home_url (add_query_arg ($ _ GET,$ wp-> demande));`To preserve query parameters you'd need to replace the empty `array()` with `$_GET`. ie: `home_url(add_query_arg($_GET,$wp->request));`
- 5
- 2018-06-14
- Brad Adams
-
Celane fonctionnerapas si WordPressestinstallé dans un sous-répertoireIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
Pourquoine pas simplement utiliser?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1toutes les autres réponses sonttrop compliquées,cen'est que la solution laplus simple+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
C'est lemoyen leplus simple.+1This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
nefonctionnepas avec les catégories deblog surmon sitedoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
Pour lespages de catégories,utilisez `get_category_link (get_query_var ('cat'));`For category pages, use `get_category_link( get_query_var( 'cat' ) );`
- 0
- 2020-06-23
- Dario Zadro
-
- 2018-12-28
Le code suivant donnera l'URL actuelle:
global $wp; echo home_url($wp->request)
Vouspouvez utiliser le code ci-dessouspour obtenir l'URL complète avec lesparamètres de requête.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
Cela affichera le chemin complet,y compris lesparamètres de requête.Cela conservera lesparamètres de requête s'ils sont déjà dans l'URL.
The following code will give the current URL:
global $wp; echo home_url($wp->request)
You can use the below code to get the full URL along with query parameters.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
This will show the full path, including query parameters. This will preserve query parameters if already in the URL.
-
Cetextrait de codeignore `wp-admin/plugins.php` dansmon URL actuelle,cen'est que le chemin racineet les chaînes de requête.This snippet skips `wp-admin/plugins.php` in my current URL, it's only the root path and query strings.
- 0
- 2019-08-03
- Ryszard Jędraszyk
-
- 2018-11-29
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();
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();
-
Pouvez-vousexpliquer commentet pourquoi ce code résout la question?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
Àmon avis,la solution laplusflexible.Celafonctionne surn'importe quellepage WP (même sur wp-admin,wp-login.php,pages d'archives,etc.).Notez simplement qu'iln'inclut aucunparamètre d'URLIn my opinion the most flexible solution. It works on any WP page (even on wp-admin, wp-login.php, archive pages, etc). Just notice, that it does not include any URL params
- 0
- 2019-04-01
- Philipp
-
- 2018-06-11
Il s'agit d'unemanière d'exemple amélioréementionnéeprécédemment.Celafonctionne lorsque lesjolies URL sont activées,maisilignore s'ilexiste unparamètre de requête comme /page-slug/? Param=1 ou si l'URLestmoche dutout.
L'exemple suivantfonctionnera 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 ) )
This is an improved way of example that mentioned previously. It works when pretty URLs are enabled however it discards if there is any query parameter like /page-slug/?param=1 or URL is ugly at all.
Following example will work on both cases.
$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 ) )
-
- 2019-10-01
Peut-être que
wp_guess_url()
est ce que vousavoirbesoin.Disponible depuis la version 2.6.0.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
Cela devinejuste l'URL debase.Sur lefrontend,vous vous retrouvez avec uneffet similaire à `home_url ()`.This just guesses the base URL. On the frontend, you end up with a similar effect to `home_url()`.
- 0
- 2019-10-17
- Jake
-
- 2020-04-04
Aprèstant de recherches sur unetâche simple,unmélange detoutes les réponses ci-dessusfonctionnepournous:
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
Pas debarre obliquemanquante à lafin et ainsi de suite.Entant qu'identifiant de question sur la sortie de l'url actuelle,celane se souciepas de la sécuritéet d'autres choses.Cependant,un hachage comme #comment à lafin nepeutpas êtretrouvé dans PHP.
After so much research of a simple task, a mix of all answers above works for us:
function get_wp_current_url(){ global $wp; if('' === get_option('permalink_structure')) return home_url(add_query_arg(array($_GET), $wp->request)); else return home_url(trailingslashit(add_query_arg(array($_GET), $wp->request))); }
No missing slash at the end and so on. As the question id about output the current url, this doesnt care about security and stuff. However, hash like #comment at the end cant be found in PHP.
-
- 2020-07-15
Voici ce qui afonctionnépourmoi (solution courteet claire quiinclut également les chaînes de requête dans l'URL):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
L'URL de sortie ressemblera à celle ci-dessous
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
La solutionesttirée de ici
This is what worked for me (short and clean solution that includes the query strings in the URL too):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
The output URL will look like below
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
The solution was taken from here
-
- 2020-07-28
Jeme rends compte que c'est une vieille question,mais une chose quej'ai remarquéeest quepersonnen'estmentionnéen utilisant
get_queried_object()
.C'est unefonction wpglobale qui saisittout ce qui se rapporte à l'url actuelle sur laquelle vous voustrouvez.Ainsi,parexemple,si vous êtes sur unepage ou unepublication,elle renverra un objet depublication.Si vous êtes sur une archive,il renverra un objet detypepublication.
WP a également untas defonctions d'aide,comme
get_post_type_archive_link
auxquelles vouspouvez donner le champ detype depublication des objetset récupérer son lien comme çaget_post_type_archive_link(get_queried_object()->name);
Lefaitest que vousn'avezpasbesoin de vousfier à certaines des réponses lespluspirates ci-dessus,mais utilisez à laplace l'objetinterrogépourtoujours obtenir l'URL correcte.
Celafonctionnera égalementpour lesinstallationsmultisites sanstravail supplémentaire,caren utilisant lesfonctions de wp,vous obteneztoujours l'URL correcte.
I realize this is an old question, however one thing I've noticed is no-one mentioned using
get_queried_object()
.It's a global wp function that grabs whatever relates to the current url you're on. So for instance if you're on a page or post, it'll return a post object. If you're on an archive it will return a post type object.
WP also has a bunch of helper functions, like
get_post_type_archive_link
that you can give the objects post type field to and get back its link like soget_post_type_archive_link(get_queried_object()->name);
The point is, you don't need to rely on some of the hackier answers above, and instead use the queried object to always get the correct url.
This will also work for multisite installs with no extra work, as by using wp's functions, you're always getting the correct url.
Je souhaite ajouter un code PHPpersonnalisépourm'assurer que chaquefois qu'unepage demon site se charge dansmonnavigateur,l'URL de cettepageest renvoyée à l'écran.Jepeux utiliser
echo get_permalink()
,mais celane fonctionnepas surtoutes lespages.Certainespages (parexemple,mapage d'accueil ) affichentplusieurs articles,et sij'utiliseget_permalink()
sur cespages,l'URL de lapage affichéen'estpas retournée (je crois qu'elle renvoie l'URL du derniermessage de laboucle).Pour cespages,commentpuis-je renvoyer l'URL?Puis-je attacher
get_permalink()
à un hookparticulier qui se déclenche avant que labouclene soitexécutée?Oupuis-jeen quelque sorte sortir de laboucle ou la réinitialiser unefois qu'elleestterminée?Merci.