¿Cómo se muestra la URL de la página actual?
-
-
¿Puedeproporcionar algún contexto sobre lo que legustaría hacer conesta URL?¿Estásintentando crear URLpara compartir?¿Ensamblar URLpersonalizadasparaenlaces/acciones?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 Megustaríaponeren cola un script JSen particular,pero soloen ciertaspáginas (eneste caso,esaspáginas son lapágina deinicio demi sitioen variosidiomas: https://www.example.com/,https://www.example.com/fr/,https://www.example.com/es/,etc.).El archivo JS servirápara agregar hipervínculos a variostítulos que aparecen soloen lapágina deinicio.@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
-
¿Por quéno usar `is_home ()` o `is_page ('fr')`etc y soloponeren colael script sies cierto?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 Bueno,ahorami códigoes `if (home_url ($ wp-> request)==home_url ()) {wp_enqueue_script ();}` Estoparece activarseen cadapágina deinicio,independientemente delidioma.¿Eseso lo que sugieres?@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
-
¿Por quéno usar `$ _SERVER ['REQUEST_URI']` y compañía?Veaestapregunta: 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 respuestas
- votos
-
- 2017-07-25
get_permalink()
soloes realmente útilparapáginas ypublicacionesindividuales,y solofunciona dentro del ciclo.Laformamás sencilla que he vistoes la siguiente:
global $wp; echo home_url( $wp->request )
$wp->request
incluye laparte de la ruta de la URL,porejemplo./path/to/page
yhome_url()
generan la URLen Configuración> General,peropuede agregar una ruta,por lo que agregaremos la ruta de solicitud a la URL deinicioen este código.Tengaen cuenta queestoprobablementenofuncionará con losenlacespermanentes configuradosen Sencillo y dejará las cadenas de consulta (laparte
?foo=bar
de la URL).Para obtener la URL cuando losenlacespermanentesestán configurados como simples,puede usar
$wp->query_vars
en su lugar,pasándola aadd_query_arg()
:global $wp; echo add_query_arg( $wp->query_vars, home_url() );
Ypuede combinarestos dosmétodospara obtener la URL actual,incluida la cadena de consulta,independientemente de la configuración delenlacepermanente:
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 losenlacespermanentes seestablecenen simple: `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 Lointenté,peroparece que solo devuelve la URL demi página deinicio.Comopuede veren laparte superiorizquierda deestapágina (https://dev.horizonhomes-samui.com/properties/hs0540/),donde heinsertadoel códigopara `echo home_url ($ wp-> request)`.Me he asegurado deincluirtambién `global $ wp`.Losenlacespermanentesno son "Sencillos",sino queestán configurados como "Nombre de lapublicación".Tampoco veoningúnerror de PHP relevanteen el registro.Estapáginaen particularesparte demi sitio de desarrollo,que de otromodoestábloqueadopara los visitantes.Noestoy seguro de siesoimporta ono.editar: En realidad,manténesepensamiento,podría ser unerror del usuario.Colocarse...@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,tu código realmentefunciona.Miproblemafue queestabaincluyendoel códigoen functions.php 'desnudo',es decir,noen ningunafunción queesté adjunta a ungancho.Entonces,su código devolvía la URL de lapágina deinicio,independientemente de lapágina que semostrabaen minavegador.Una vez quemovíel código dentro de unafunción,unafunción adjunta a ungancho WP (wp_enqueue_scripts),de hecho devolvió la URL de lapáginamostrada.¿Conoce la razón deese comportamiento?Tal veznecesite crear unanuevapreguntaparaeso.@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 Siel código seencuentra "desnudo"en functions.php,entonces loestáejecutando antes de que se hayan configuradotodas laspropiedades del objeto $ wp.Cuando loenvuelveen unafunción adjunta a ungancho apropiado,está retrasando suejecución hasta que seejecute unpunto adecuadoen el código de 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
-
Todosestosmétodos sonincreíbles yexcelentesideasparatrabajar con WordPress.Sinembargo,puede agregarles `trailingslashit ()`,dependiendo de susnecesidades.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
Puede usarel siguiente códigopara obtener la URL actual completaen WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
Estomostrará la ruta completa,incluidos losparámetros de consulta.
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.
-
Hola,siechas un vistazo a https://developer.wordpress.org/reference/functions/add_query_arg/,verás quetu códigono conserva losparámetros de consultaexistentes.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
-
Parapreservar losparámetros de consulta,necesitaría reemplazarel `array ()` vacíopor `$ _GET`.es decir: `home_url (add_query_arg ($ _ GET,$ wp-> solicitud));`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
-
Nofuncionará si WordPressestáinstaladoen un subdirectorioIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
¿Por quéno usarlo?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1todas las demás respuestas son demasiado complicadas,estaes solo la soluciónmás simple+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
Estaes lamaneramásfácil.+1This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
nofunciona con categorías deblogsen mi sitiodoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
Para laspáginas de categorías,use `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
El siguiente código dará la URL actual:
global $wp; echo home_url($wp->request)
Puede utilizarel siguiente códigopara obtener la URL completajunto con losparámetros de consulta.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
Estomostrará la ruta completa,incluidos losparámetros de consulta.Esto conservará losparámetros de consulta si yaestánen la 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.
-
Estefragmento omite `wp-admin/plugins.php`en mi URL actual,es solo la ruta raíz y las cadenas de consulta.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();
-
¿Puedeexplicar cómo ypor quéeste código resuelve lapregunta?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
Enmi opinión,la soluciónmásflexible.Funcionaen cualquierpágina de WP (inclusoen wp-admin,wp-login.php,páginas de archivo,etc.).Solotengaen cuenta quenoincluyeningúnparámetro de 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
Estaes unaforma deejemplomejorada que semencionó anteriormente.Funciona cuando las URLbonitasestán habilitadas,sinembargo,se descarta si hay algúnparámetro de consulta como /page-slug/? Param=1 o si la URLesfea.
El siguienteejemplofuncionaráen ambos casos.
$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
Quizás
wp_guess_url()
es lo quenecesitar.Disponible desde la versión 2.6.0.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
Esto solo adivina la URLbase.En lainterfaz,terminas con unefecto similar 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
Después detantoinvestigar sobre unatarea simple,una combinación detodas las respuestas anterioresnosfunciona:
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))); }
Nofalta unabarra alfinal y así sucesivamente.Como laidentificación de lapregunta sobre la salida de la URL actual,estono sepreocupapor la seguridad yesas cosas.Sinembargo,hash como #comment alfinalno sepuedeencontraren 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
Estoes lo quefuncionóparamí (solución corta y limpia quetambiénincluye las cadenas de consultaen la URL):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
La URL de salida se verá a continuación
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
La solución setomó de aquí
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
Me doy cuenta de queestaes unapregunta antigua,sinembargo,una cosa quenotées quenadiemencionóel uso de
get_queried_object()
.Es unafunción de wpglobal que capturatodo lo relacionado con la URL actualen la que seencuentra.Entonces,porejemplo,siestásen unapágina opublicación,devolverá un objeto depublicación.Siestáen un archivo,devolverá un objeto detipo depublicación.
WPtambiéntiene unmontón defunciones auxiliares,como
get_post_type_archive_link
a las quepuede asignarel campo detipo depublicación de los objetos y recuperar suenlace asíget_post_type_archive_link(get_queried_object()->name);
Elpuntoes quenoesnecesario que confíeen algunas de las respuestasmás complicadas anteriores y,en su lugar,utiliceel objeto consultadopara obtener siempre la URL correcta.
Estotambiénfuncionaráparainstalaciones de sitiosmúltiples sintrabajo adicional,ya que al usar lasfunciones de wp,siempre obtendrá la URL correcta.
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.
Quiero agregar código PHPpersonalizadopara asegurarme de que cada vez que unapágina demi sitio se cargueen minavegador,la URL deesapágina se reflejeen lapantalla.Puedo usar
echo get_permalink()
,peroesonofuncionaen todas laspáginas.Algunaspáginas (porejemplo,mi página deinicio )muestran variaspublicaciones y,si utilizoget_permalink()
en estaspáginas,la URL de lapáginamostradano se devuelve (creo que devuelve la URL de la últimapublicaciónen elbucle).Paraestaspáginas,¿cómopuedo devolver la URL?¿Puedo adjuntar
get_permalink()
a unganchoen particular que se activa antes de que seejecuteelbucle?¿Opuedo de algunamanera salir del ciclo o restablecerlo una vez queesté completo?Gracias.