Obtém o URL da página atual (incluindo paginação)

12

Existe uma função WP para obter automaticamente o URL correto da página atual? Ou seja, se eu abri apenas uma única postagem, a função retorna o mesmo que get_permalink() , mas se eu estiver em uma instância paginada de uma página (ao paginar pelos comentários), a função retornará o mesmo que get_pagenum_link(get_query_var('paged')) faria .

Eu procurei no códice, mas não encontrei o que estava procurando. (Mas mesmo get_pagenum_link() não está documentado lá.)

Eu já sei sobre esta função , mas eu ficaria feliz se houvesse uma função WP "nativa" que não o trabalho.

Obrigado antecipadamente! Atenciosamente, René

    
por René Schubert 31.01.2013 / 23:05

8 respostas

22

Além da resposta de Rajeev Vyas, você não precisa passar nenhum parâmetro não vazio 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 recai em $_SERVER[ 'REQUEST_URI' ] e aplica urlencode_deep() a ela. Veja enlace

Editar: Como $_SERVER[ 'REQUEST_URI' ] representa a entrada do usuário não filtrada, deve-se sempre ignorar o valor de retorno de add_query_arg() quando o contexto é alterado. Por exemplo, use esc_url_raw() para uso do 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 sites com subdiretórios, pois home_url() retornaria o URI completo, incluindo um segmento de caminho. Uma solução melhor para o código ciente 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 WordPress core não suporta porta, usuário ou senha em uma URL de site multisite, portanto, isso deve ser suficiente.

    
por David 15.12.2013 / 13:04
3
global $wp;
$current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) );

Não é uma função, mas definitivamente usando o código wordpress.

enlace

    
por Rajeev Vyas 01.02.2013 / 07:17
0

1) $_SERVER['REQUEST_URI'] - Retorna o URL para acessar a página que está executando o script. Se você precisar digitar http://www.example.com/product.php?id=5 para acessar a página, então $_SERVER['REQUEST_URI'] retornará /product.php?id=5 .

2) $_SERVER['DOCUMENT_ROOT'] - Retorna o diretório raiz do servidor que é especificado no arquivo de configuração do servidor. Essa variável geralmente retorna o caminho como /usr/yoursite/www no Linux e D:/xamps/xampp/htdocs no windows.

3) $_SERVER['HTTP_HOST'] - Retorna o nome do host, conforme encontrado no cabeçalho http. Essa variável normalmente retorna o caminho como example.com quando você encontra http://example.com na barra de endereço do navegador e retorna www.example.com quando vê http://www.example.com na barra de endereço. Isso é bastante útil quando você preserva a sessão ao efetuar o pagamento on-line usando o PHP, pois a sessão armazenada para http://example.com não é igual à do http://www.example.com .

4) $_SERVER['HTTP_USER_AGENT'] - Retorna o detalhe do agente do usuário (navegador) acessando a página da web. Podemos usar strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”) para detectar o Microsoft Internet Explorer ou você pode usar strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”) para detectar o navegador Firefox no PHP.

5) $_SERVER['PHP_SELF'] - Retorna o nome do arquivo do script atualmente em execução. Suponhamos que você esteja acessando o URL http://www.example.com/product.php?id=5 , em seguida, $_SERVER['PHP_SELF'] retorna /product.php no 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 strings de consulta são aquelas que estão disponíveis após o sinal “?”. Se você usar $_SERVER['QUERY_STRING'] no script executando o seguinte URL http://www.example.com/index.php?id=5&page=product , então ele retornará id=5&page=product em 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 usar $_SERVER['REMOTE_ADDR'] para obter o endereço IP real da máquina do cliente. Veja este artigo para saber como obter verdadeiros termos de IP em PHP.

8) $_SERVER['SCRIPT_FILENAME'] - Retorna o caminho absoluto do arquivo que está sendo executado no momento. Ele retorna caminho como var/example.com/www/product.php no Linux e caminho como D:/xampp/xampp/htdocs/test/example.php no windows.

    
por Foxsk8 02.02.2014 / 21:49
0

wp_guess_url é o que você está procurando.

  

Adivinha o URL do site.

     

Removerá os links wp-admin para recuperar apenas URLs de retorno que não estejam no diretório wp-admin.

    
por Jesse 11.03.2013 / 11:15
0

add_query_args( null, null ) criará um elemento de matriz com chave vazia ( $qs[""] = null ), embora isso não afete o resultado.

De acordo com add_query_arg () | Função | Recursos para desenvolvedores do WordPress , o segundo, o terceiro parâmetro é opcional e pode ser omitido.

add_query_args( null, null ) pode ser mais curto .

$current_url = add_query_args( [] );

Há também a versão mais curta , embora não seja recomendado, já que o primeiro parâmetro é o parâmetro necessário.

$current_url = add_query_args();

Além disso, observe que home_url( add_query_vars( [] ) ) e home_url( add_query_arg( null, null ) ) podem não retornar a URL real quando o WordPress é instalado em um subdiretório.

por exemplo. https://example.com/wp/wp/foo pode ser retornado quando o WordPress estiver instalado em https://example.com/wp/ .

Atualização: 2017/01/23

Minha versão baseada na solução do David para obter URLs absolutos.

$parts = parse_url(home_url());
$uri   = $parts['scheme'] . '://' . $parts['host'];

if (array_key_exists('port', $parts)) {
    $uri .= ':' . $parts['port'];
}

$uri .= add_query_arg([]);
    
por Whizark 29.08.2016 / 18:35
0

Para mim, <?php esc_url(the_permalink()); ?> funciona (em uma página de arquivo com paginação).

    
por Henning Fischer 06.02.2017 / 09:56
-1

Eu não sei agora de paginação mas Você pode usar essa função para obter url dentro do loop

<?php $ID = get_the_ID(); 
echo get_permalink( $ID ); ?>

Ou então, se você não preferir usar o php, você também pode optar pelo método jquery aqui (isso ajudará você a fazê-lo funcionar fora do loop)

$(document).ready(function () {
var vhref = $(location).attr('href');
var vTitle = $(this).attr('title');
$('#spnTitle').html('' + vTitle + '');
$('#spnURL').html('' + vhref + '');
});​

ou se vc preferir usar a função php vc precisa pegar o id fora do loop

    
por vaibhav 01.02.2013 / 06:55
-2

Você pode usar a função wordpress para obter o URL da página atual

the_permalink()

Isso retornará o link do URL da página atual.

    
por Vivek Pandey 26.02.2014 / 11:15