Como obter URL da página atual exibida?
-
-
Vocêpodefornecer algum contexto sobre o que vocêgostaria defazer comesse URL?Vocêestátentando criar URLs compartilháveis?Montar URLspersonalizadospara links/ações?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 Eugostaria deenqueue um scriptjsparticular,mas apenasem determinadaspáginas (neste caso,essaspáginas são apáginainicial domeu siteem váriosidiomas: https://www.example.com/,https://www.example.com/fr/,https://www.example.com/es/,etc).O arquivo JS Será servidorpara adicionar hiperlinks a váriostítulos que aparecem apenasnapáginainicial.@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 quenão apenas usar "is_home ()" ou `is_page ('fr') 'etce apenasenqueue o script sefor verdade?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 Bem,agorameu código é `if (home_url ($ wp-> solicitação)==home_url ()) {wp_enqueue_script ();}`issoparece dispararem todas as homepage,independentemente da linguagem.Éisso que vocêestava sugerindo?@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 quenão usar `$ _Server ['solicitar_uri']`e empresa?Vejaestapergunta: https://stackoverflow.com/4/6768793/247696Why not use `$_SERVER['REQUEST_URI']` and company? See this question: https://stackoverflow.com/q/6768793/247696
- 1
- 2019-05-29
- Flimm
-
10 respostas
- votos
-
- 2017-07-25
get_permalink ()
é realmente útilparapáginase postagens únicas,e apenasfunciona dentro do loop.Amaneiramais simples que vi éesta:
Global $ WP; echo home_url ($ WP- & GT;pedido)
$ wp- > solicitar
inclui aparte do caminho do URL,porexemplo./Path/To/Page
eHome_Url ()
Saída do URLnas Configurações> Geral,mas vocêpode anexar um caminhoparaele,entãoestamos anexando o caminho da solicitaçãopara o URLem casaneste código.Observe queissoprovavelmentenãofunciona com Permalinks definidopara simplese deixará as strings de consulta (o
foo=bar
parte do URL).Para obter o URL quando Permalinksestiverem definidospara aplanície,vocêpode usar
$ wp- > Query_vars
em vez disso,passando-oparaadd_query_arg ()
:Global $ WP; echo add_query_arg ($ wp- > query_vars,home_url ());
e vocêpode combinaresses doismétodospara obter o URL atual,incluindo a string de consulta,independentemente das configurações de Permalink:
Global $ WP; echo add_query_arg ($ WP- & GT; Query_Vars,home_url ($ wp- > solicitação));
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 ) );
-
Se Permalinks definirpara simples: `echo '//'.$ _Server ['http_host'].$ _Server ['solicitar_uri']; `.If permalinks set to plain: `echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`.
- 7
- 2017-07-25
- Max Yudin
-
@Jacob Eutentei isso,maspareceestar devolvendo o URL daminhapáginainicial.Como vocêpode verno canto superioresquerdonestapágina (https://dev.horizonhomes-samui.com/properties/hs0540/),ondeeuinseri o códigopara 'echo home_url ($ wp-> solicitação) `.Eu assegurei aincluir "global $ WP"também.Permalinksnão são "simples",mas definidos como 'Post Name'.Eunão vejonenhumerro de PHP relevanteno logtambém.Estapáginaem particularfazparte domeu site Dev,que ébloqueadopara os visitantes.Nãotenho certeza seissoimporta ounão.EDIT: Na verdade,segureessepensamento -poderia sererro do usuário.Espera...@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
-
@Jacob Edit 2: OK,seu código realmentefunciona.Meuproblemaera queeuestavaincluindo o códigonasfunções.php 'nu' «i.e.nãoem qualquerfunção queesteja ligada a umgancho.Portanto,seu código retornou a URL dapáginainicial,independentemente dapáginaexibidanomeunavegador.Uma vez queeumovi o código dentro de umafunção - umafunção conectada a umgancho WP (WP_ENQUEUE_SCRIBTES),defato retornou a URL dapáginaexibida.Você conhece omotivo desse comportamento?Talvezeuprecise criar umanovaperguntaparaisso.@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 Se o código se sentar "nu"em funções.php,vocêestáexecutando antes detodas aspropriedades do objeto $ WPter sido configurado.Quando vocêenvolveem umafunção anexada a umgancho apropriado,vocêestá atrasando suaexecução até que umponto adequadono código WordPress sejaexecutado.@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
-
Essesmétodos sãotodosincríveise grandesideiasparatrabalhar com o WordPress.Vocêpode adicionar "TrailingsLashit ()"paraeles,dependendo de suasnecessidades.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
Vocêpode usar o código abaixopara obtertodo o URL atualno WordPress:
global $wp; $current_url = home_url(add_query_arg(array(), $wp->request));
Issomostrará o caminho completo,incluindoparâ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.
-
Oi - Se vocêtiver uma olhadaem https://developer.wordpress.org/reference/functions/add_querery_arg/você verá que seu códigonãopreserva osparâ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 osparâmetros de consulta que vocêprecisaria substituir a "matriz vazia ()" com `$ _Get`.ie: `home_url (add_query_arg ($ _ obter,$ wp-> solicitação));`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
-
Nãofuncionará se o WordPressestiverinstaladono subdiretórioIt won’t work if WordPress is installed in subdirectory
- 0
- 2018-11-26
- ManzoorWani
-
- 2019-10-21
Por quenão apenas usar?
get_permalink(get_the_ID());
Why not just use?
get_permalink(get_the_ID());
-
+1 Todas as outras respostas sãomuitopara complicadas,esta é apenas a soluçãomais simples+1 all other answers are much to complicated, this is just the simplest solution
- 2
- 2020-04-16
- Mark
-
Esta é amaneiramaisfácil.+1.This is the easiest way. +1
- 1
- 2020-05-23
- Syafiq Freman
-
nãofunciona com categorias deblognomeu sitedoesn't work with blog categories on my site
- 0
- 2020-06-21
- Iggy
-
Parapáginas de categoria,use `get_category_link (get_query_var ('gato'));`For category pages, use `get_category_link( get_query_var( 'cat' ) );`
- 0
- 2020-06-23
- Dario Zadro
-
- 2018-12-28
O código a seguirfornecerá o URL atual:
global $wp; echo home_url($wp->request)
Vocêpode usar o código abaixopara obter o URL completojunto comparâmetros de consulta.
global $wp; $current_url = home_url(add_query_arg(array($_GET), $wp->request));
Issomostrará o caminho completo,incluindoparâmetros de consulta.Issopreservará osparâmetros de consulta sejáestiverno 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.
-
Este snippet salta `WP-Admin/Plugins.php`nomeu URL atual,é apenas o caminho da raize as cordas 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();
-
Vocêpodeexplicar comoe por queesse código resolve apergunta?Can you explain how and why this code solves the question?
- 0
- 2018-11-29
- kero
-
Naminha opinião,a soluçãomaisflexível.Funcionaem qualquerpágina WP (mesmono WP-Admin,WP-Login.php,páginas de arquivo,etc).Basta avisar,quenãoincluinenhumparâ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
Esta é umamaneiramelhorada deexemplo quemencionou anteriormente.Funciona quando os URLsbonitos são habilitados Noentanto,ele descarta se houver algumparâmetro de consulta como /página-slug/? Param=1 ou URL éfeioem tudo.Após oexemplofuncionaráem ambos os 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
talvez
wp_guess_url()
é o que vocênecessidade.Disponível desde a versão 2.6.0.Maybe
wp_guess_url()
is what you need. Available since version 2.6.0.-
Isso só adivinha o URLbase.Nofrontend,você acaba com umefeito semelhante 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
Apóstantapesquisa de umatarefa simples,umamistura detodas as respostas acimafuncionaparanós:
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))); }
Não hábarra ausentenofinale assimpor diante.Como o ID dapergunta sobre a saída do URL atual,issonão seimporta com segurançae outras coisas.Noentanto,Hash como #commentnofinalnãopode serencontradono 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
Éisso quefuncionouparamim (solução curtae limpa queinclui as seqüências de consultano URLtambém):
$current_url = add_query_arg( $_SERVER['QUERY_STRING'], '', home_url( $wp->request ) );
O URL de saídaficará abaixo de
http://sometesturl.test/slug1/slug2?queryParam1=testing&queryParam2=123
a soluçãofoitirada de aqui
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
Eupercebo queesta é umapergunta antiga,noentanto,uma coisa quejánotei éninguémmencionada usando
get_queried_object()
.É umafunçãoglobal WP que agarra o que se relaciona com o URL atualem que vocêestá.Portanto,porexemplo,se vocêestiverem umapágina oupostagem,retornará um objeto Post.Se vocêestiverem um arquivo,ele retornará um objeto depostagem.
wptambémtem ummonte defunções auxiliares,como
get_post_type_archive_link
que vocêpodefornecer o campo depostagem de objetose recuperar seu link como assimget_post_type_archive_link(get_queried_object()->name);
Oponto é,vocênãoprecisa confiarem algumas das respostas hackier acimae,em vez disso,use o objeto consultadopara sempre obter o URL correto.
Issotambémfuncionaráparainstalaçõesmultisite semtrabalhoextra,como usando asfunções do WP,vocêestá sempre recebendo o URL correto.
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.
Eu quero adicionar código PHPpersonalizadoparagarantir que sempre que umapáginanomeu site carreganomeunavegador,o URL dessapágina éecoadopara atela.Euposso usar
echo get_permalink()
,masissonãofuncionaem todas aspáginas.Algumaspáginas (porexemplo, Minha homepage )exiba váriaspostagense,seeu usarget_permalink()
Nestaspáginas,o URL dapáginaexibidanão é retornado (acredito queele retorna a URL da últimapostagemno loop).Paraestaspáginas,comoposso devolver o URL?Posso anexar
get_permalink()
a umganchoespecífico que é disparado antes que o loop sejaexecutado?Ouposso sair de algumaforma sair do loop ou redefini-lo assim queestiver concluído?obrigado.