Come visualizzare l'URL della pagina corrente?
-
-
Potetefornire un contesto su ciò che vorrestefare con questo URL?Stai cercando di creare URL condivisibili?Assemblare URLpersonalizzatiper collegamenti/azioni?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 vorrei accodare unparticolare script JS,ma solo su determinatepagine (in questo caso,quellepagine sono la homepage delmio sitoin varie lingue: https://www.example.com/,https://www.example.com/fr/,https://www.example.com/es/,ecc.).Ilfile JS verrà serverper aggiungere collegamentiipertestuali a diversititoli che appaiono solo sulla homepage.@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
-
perchénon usare semplicemente `is_home ()` o `is_page ('fr')`ecce accodare lo script solo se è vero?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 Bene,orailmio codice è `if (home_url ($ wp-> request)==home_url ()) {wp_enqueue_script ();}` Questo sembra attivarsi su ogni homepage,indipendentemente dalla lingua.È questo che stavi suggerendo?@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
-
Perchénon utilizzare "$ _SERVER ['REQUEST_URI']"e company?Vedi questa domanda: 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 risposta
- voti
-
- 2017-07-25
get_permalink()
è veramente utile soloper singolepaginee poste funziona solo all'interno del ciclo.Ilmodopiù semplice che ho visto è questo:
global $wp; echo home_url( $wp->request )
$wp->request
include laparte delpercorso dell'URL,ades./path/to/page
ehome_url()
restituiscono l'URLin Impostazioni> Generali,mapuoi aggiungervi unpercorso,quindi stiamo aggiungendoilpercorso della richiesta a l'URL della homein questo codice.Nota che questoprobabilmentenonfunzionerà coni permalinkimpostati su Plaine lascerà le stringhe di query (laparte
?foo=bar
dell'URL).Per ottenere l'URL quandoi permalink sonoimpostati come semplici,puoi usare
$wp->query_vars
invece,passandolo aadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
Epotresti combinare questi duemetodiper ottenere l'URL corrente,inclusa la stringa di query,indipendentemente dalleimpostazioni delpermalink:
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 ) );
-
Sei permalink sonoimpostati suplain: `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 ci hoprovato,ma sembra che stia restituendo solo l'URL dellamia homepage.Comepuoi vederein alto a sinistrain questapagina (https://dev.horizonhomes-samui.com/properties/hs0540/),dove hoinseritoil codiceper `echo home_url ($ wp-> request)`.Mi sono assicurato diincludere anche "global $ wp".Ipermalinknon sono "Normali",maimpostati su "Nomepost".Non vedonemmenoerrori PHP rilevantinel registro.Questaparticolarepaginafaparte delmio sito di sviluppo,che altrimenti èbloccato ai visitatori.Non sono sicuro che siaimportante omeno.modifica:in realtà,mantieni quelpensiero -potrebbeessere unerrore dell'utente.Pausa...@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
-
@Jacobmodifica 2: OK,iltuo codicefunziona davvero.Ilmioproblemaera che stavoincludendoil codicein functions.php 'naked',cioènonin nessunafunzione collegata a un hook.Quindiiltuo codice restituiva l'URL della homepage,indipendentemente dallapagina visualizzatanelmiobrowser.Una volta spostatoil codice all'interno di unafunzione,unafunzione collegata a un hook WP (wp_enqueue_scripts),haeffettivamente restituito l'URL dellapagina visualizzata.Conosciilmotivo di quel comportamento?Forse hobisogno di creare unanuova domandaper questo.@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 Seil codice sitrova "nudo"in functions.php,lo staieseguendoprima chetutte leproprietà dell'oggetto $ wp siano stateimpostate.Quando lo avvolgiin unafunzione collegata a un hook appropriato,stai ritardando la suaesecuzionefino a quandonon vieneeseguito unpunto adattonel codice di 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
-
Questimetodi sonotuttifantasticie ottimeideeper lavorare con WordPress.Tuttavia,potresti aggiungere "trailingslashit ()",a seconda delletueesigenze.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
Puoi utilizzareil codice seguenteper ottenere l'intero URL correntein WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
Questomostreràilpercorso completo,inclusii parametri della query.
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.
-
Ciao,se dai un'occhiata a https://developer.wordpress.org/reference/functions/add_query_arg/vedrai cheiltuo codicein realtànon conservai parametri di queryesistenti.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
-
Perpreservarei parametri della query ènecessario sostituireil vuoto "array ()" con "$ _GET".cioè: `home_url (add_query_arg ($ _ GET,$ wp-> richiesta));`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
-
Nonfunzionerà se WordPress èinstallatonella sottodirectoryIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
Perchénon usarlo semplicemente?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1tutte le altre risposte sonotroppo complicate,questa è solo la soluzionepiù semplice+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
Questo èilmodopiù semplice.+1This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
nonfunziona con le categorie diblog sulmio sitodoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
Per lepagine delle categorie,usa `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
Il codice seguentefornirà l'URL corrente:
global $wp; echo home_url($wp->request)
Puoi utilizzareil codice seguenteper ottenere l'URL completoinsieme aiparametri di ricerca.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
Questomostreràilpercorso completo,inclusii parametri della query.Ciòmanterrài parametri della query segiànell'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.
-
Questoframmento salta `wp-admin/plugins.php`nelmio URL corrente,è soloilpercorso di roote le stringhe di query.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();
-
Puoi spiegare comee perché questo codice risolve la domanda?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
Secondome la soluzionepiùflessibile.Funziona su qualsiasipagina WP (anche su wp-admin,wp-login.php,pagine di archivio,ecc.).Bastanotare chenoninclude alcunparametro 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
Questo è unmodo diesempiomigliorato rispetto a quellomenzionatoin precedenza.Funziona quando sono abilitati URL carini,tuttavia vieneignorato se sonopresentiparametri di query come /page-slug/? Param=1 o l'URL è affattobrutto.
L'esempio seguentefunzioneràin entrambii casi.
$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
Forse
wp_guess_url()
è ciò chetubisogno.Disponibile dalla versione 2.6.0.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
Questoindovina solo l'URL dibase.Sulfrontend,si ottiene uneffetto simile a `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
Dopotante ricerche su un compito semplice,pernoifunziona unmix ditutte le risposteprecedenti:
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))); }
Nessunabarramancante allafine e così via.Poiché la domandaid sull'output dell'URL corrente,non sipreoccupa della sicurezzae del resto.Tuttavia,hash come #comment allafine nonpossonoesseretrovatiin 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
Questo è ciò che hafunzionatoperme (soluzionebrevee pulita cheinclude anche le stringhe di querynell'URL):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
L'URL di output apparirà come di seguito
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
La soluzione è statapresa da qui
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
Mi rendo conto che questa è una vecchia domanda,tuttavia una cosa che honotato è chenessuno hamenzionato l'uso di
get_queried_object()
.È unafunzione wpglobale che catturatutto ciò che riguarda l'URL correntein cuiti trovi.Quindi,adesempio,se sei su unapagina o unpost,restituirà un oggettopost.Seti troviin un archivio,restituirà un oggetto ditipopost.
WP ha anche un sacco difunzioni di supporto,come
get_post_type_archive_link
a cuipuoi assegnareil campo deltipo di articolo dell'oggettoe recuperareil suo collegamentoin questomodoget_post_type_archive_link(get_queried_object()->name);
Ilpunto è chenon ènecessariofare affidamento su alcune delle risposte degli hacker sopra,e invece utilizzare l'oggettointerrogatoper ottenere sempre l'URL corretto.
Funzionerà ancheperinstallazionimultisito senza lavoro aggiuntivo,poiché utilizzando lefunzioni di wp,ottieni sempre l'URL corretto.
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.
Voglio aggiungere codice PHPpersonalizzatoper assicurarmi che ogni volta che unapagina delmio sito viene caricatanelmiobrowser,l'URL di quellapagina venga visualizzato sullo schermo.Posso usare
echo get_permalink()
,manonfunziona sututte lepagine.Alcunepagine (ades. lamia homepage ) visualizzano diversiposte se utilizzoget_permalink()
in questepagine,l'URL dellapagina visualizzatanon viene restituito (credo che restituisca l'URL dell'ultimopostnel ciclo).Per questepagine,comeposso restituire l'URL?Posso allegare
get_permalink()
a unparticolare hook che si attivaprima cheil ciclo vengaeseguito?Opossoin qualchemodo uscire dal ciclo o ripristinarlo una volta completato?Grazie.