Além da resposta de Rajeev Vyas, você não precisa passar parâmetros não vazios para add_query_arg()
. O seguinte sempre funcionou bem para mim:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
A função retorna $_SERVER[ 'REQUEST_URI' ]
e se aplica urlencode_deep()
a ela. Consulte https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
Editar:
como $_SERVER[ 'REQUEST_URI' ]
representa a entrada não filtrada do usuário, deve-se sempre escapar do valor de retorno add_query_arg()
quando o contexto for alterado. Por exemplo, use esc_url_raw()
para uso de banco de dados ou esc_attr()
ou esc_url()
para HTML.
Atualizar
O exemplo mostrado que deve criar um URI absoluto (contendo esquema e host) não funciona em vários locais com subdiretórios, pois home_url()
retornaria o URI completo, incluindo um segmento de caminho. Uma solução melhor para código com reconhecimento de vários sites seria esta:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
O núcleo do WordPress não suporta porta, usuário ou senha em uma URL de site multissite, portanto isso deve ser suficiente.
Não é uma função, mas definitivamente usando o código wordpress ..
http://kovshenin.com/2012/current-url-in-wordpress/
fonte
year
são adicionados à string de consulta, mesmo que eles não existam antes, e outros parâmetros, por exemplo, oreplytocom
parâmetro, se perdem. Você conhece uma solução para isso?1)
$_SERVER['REQUEST_URI']
- Retorna a URL para acessar a página que está executando o script. Se você precisar digitarhttp://www.example.com/product.php?id=5
para acessar a página,$_SERVER['REQUEST_URI']
retornará/product.php?id=5
.2)
$_SERVER['DOCUMENT_ROOT']
- Retorna o diretório raiz do servidor especificado no arquivo de configuração do servidor. Essa variável geralmente retorna o caminho como/usr/yoursite/www
no Linux eD:/xamps/xampp/htdocs
no Windows.3)
$_SERVER['HTTP_HOST']
- Retorna o nome do host conforme encontrado no cabeçalho http. Essa variável geralmente retorna o caminho comoexample.com
quando você encontrahttp://example.com
na barra de endereços do navegador e retornawww.example.com
quando você vêhttp://www.example.com
na barra de endereços. Isso é bastante útil quando você precisa preservar a sessão enquanto faz o pagamento on-line usando PHP, pois a sessão armazenada parahttp://example.com
não é a mesma que para ohttp://www.example.com
.4)
$_SERVER['HTTP_USER_AGENT']
- Retorna os detalhes do agente do usuário (navegador) acessando a página da web. Podemos usarstrpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
para detectar o Microsoft Internet Explorer ou você podestrpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
detectar o navegador firefox em PHP.5)
$_SERVER['PHP_SELF']
- Retorna o nome do arquivo do script atualmente em execução. Vamos supor que você esteja acessando a URLhttp://www.example.com/product.php?id=5
e$_SERVER['PHP_SELF']
retorne/product.php
em seu script.6)
$_SERVER['QUERY_STRING']
- Retorna a string de consulta se a string de consulta for usada para acessar o script atualmente em execução. As cadeias de consulta são aquelas que estão disponíveis após "?" sign.if você usar$_SERVER['QUERY_STRING']
no script executando o seguinte URLhttp://www.example.com/index.php?id=5&page=product
, ele retornaráid=5&page=product
no seu script.7)
$_SERVER['REMOTE_ADDR']
- Retorna o endereço IP da máquina remota acessando a página atual. Mas você não pode confiar$_SERVER['REMOTE_ADDR']
para obter o endereço IP real da máquina do cliente. Veja este artigo para saber como obter endereços IP reais em PHP.8)
$_SERVER['SCRIPT_FILENAME']
- Retorna o caminho absoluto do arquivo que está sendo executado no momento. Ele retorna o caminho comovar/example.com/www/product.php
no Linux e o caminhoD:/xampp/xampp/htdocs/test/example.php
no Windows.fonte
wp_guess_url é o que você está procurando.
fonte
add_query_args( null, null )
criará um elemento de matriz com a chave vazia ($qs[""] = null
), embora não afete o resultado.De acordo com add_query_arg () | Função | Os Recursos para desenvolvedores do WordPress , os segundo e terceiro parâmetros são opcionais e podem ser omitidos.
add_query_args( null, null )
pode ser mais curto .Também existe a versão mais curta, embora não seja recomendada, pois o 1º parâmetro é o parâmetro necessário.
Além disso, nota que tanto
home_url( add_query_vars( [] ) )
ehome_url( add_query_arg( null, null ) )
pode não retornar URL real quando WordPress está instalado em um sub-diretório.por exemplo,
https://example.com/wp/wp/foo
pode ser retornado quando o WordPress estiver instaladohttps://example.com/wp/
.Atualização: 23/01/2017
Minha versão baseada na solução de David para obter URL absoluta.
fonte
Para mim
<?php esc_url(the_permalink()); ?>
funciona (em uma página de arquivo com paginação).fonte
the_permalink()
ecoa o permalink escapado, ele não retorna nada. Oesc_url()
arquivo não recebe nada e, se receber, seria um URL de escape.Agora não faço paginação, mas você pode usar esta função para obter URL dentro do loop
Ou então, se você não preferir usar o php, também pode optar pelo método jquery aqui (isso ajudará você a fazê-lo funcionar fora do loop)
ou se você preferir usar a função php, você precisa obter o ID fora do loop
fonte
the_permalink()
não precisa do ID quando é chamado dentro do loop.Você pode usar a função wordpress para obter o URL da página atual
Isso retornará o link do URL da página atual.
fonte
the_permalink()
irá imprimir o URL do post atual. Mas não funcionará para outras solicitações e não incluirá variáveis como paginação. Portanto, não é realmente a resposta que René Schubert está procurando.