Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Wordpress - Redirecionar URL conforme localização

Como adicionar um parâmetro de url que identifique a cidade onde meu leitor está e seja capaz de trazer esse filtro na Url (Ex. meusite.com.br/são-paulo/ ou meusite.com.br/rio-de-janeiro. Desta forma, criaríamos conteúdo personalizado para cada cidade que estariam alocados em paginas especificas para cada uma dessas urls. Ex. meusite.com.br/são-paulo/noticias traria as noticias do dia a dia de são Paulo...... da mesma forma, meusite.com.br/rio-de-janeiro/noticias traria a página que eu criei que so apresentas anoticias do rio de janeiro.

10 respostas

Oi Thiago, tudo bem? Nativamente o WordPress não tem algo desse tipo até onde sei, o que você pode fazer é utilizar um plugin tipo o GeoIP (https://wordpress.org/plugins/geoip-detect/) e combinar o resultado da API desse plugin com a função wp_redirect (https://developer.wordpress.org/reference/functions/wp_redirect/)

Eu pessoalmente nunca precisei fazer algo desse tipo, mas você pode tentar!

Olá Wanderson, tudo bem e você? Ótimo, vou analisar o plugin e a função e caso tenha alguma dúvida aviso.

Boa, não esquece de dar um feedback aqui!

Ajudou bastante, muito obrigado.

Tiago, se a resposta resolveu seu problema, marca o post como solucionado por favor? Assim outros alunos já saberão que o assunto foi solucionado. Tá bem? Abs!

Boa tarde, não consegui fazer funcionar ainda, estou analisando a melhor forma mas realmente não estou encontrando. O Geo IP tanto quanto outros plugins de localização são focados em países, porém a utilização que preciso seria para diferentes cidades do Brasil e isso eu não encontrei em nenhum lugar. Tentei me iluminar com o que o Wanderson passou aqui mas realmente não consigo ver com isso pode fazer funcionar já que o plugin é focado em países. Mesmo assim muito obrigado e, caso conheçam algo a mais, será de grande ajuda.

Tiago, pena não ter ajudado muito, mas você é desenvolvedor? Poderia tentar uma alternativa programaticamente usando a Geolocation API (https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation) e o Google Maps APT(https://developers.google.com/maps/documentation/geocoding/start)

solução!

Em PHP você pode resolver este problema da seguinte forma:

<?
error_reporting(E_ALL); // Somente ambiente teste
ini_set('display_errors', '1'); // Somente ambiente teste
ini_set("allow_url_fopen", "ON");

function getRealUserIp(){
    switch(true){
      case (!empty($_SERVER['HTTP_X_REAL_IP'])) : return $_SERVER['HTTP_X_REAL_IP'];
      case (!empty($_SERVER['HTTP_CLIENT_IP'])) : return $_SERVER['HTTP_CLIENT_IP'];
      case (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) : return $_SERVER['HTTP_X_FORWARDED_FOR'];
      default : return $_SERVER['REMOTE_ADDR'];
    }
}

$ip = getRealUserIp();
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
$posicao = explode(",", $details->loc);
$latitude = $posicao[0];
$longitude = $posicao[1];

$localizacao = "";

$baseUrl = "http://maps.google.com/maps/api/geocode/json?latlng=$latitude,$longitude&sensor=false";
$requestUrl    = str_replace(" ", "+", str_replace("+", "%2B", utf8_encode($baseUrl)));
$string = file_get_contents($requestUrl);
$json_retorno = json_decode($string, true);
if ($json_retorno["status"]=="OK"){
    $bairro = $json_retorno["results"][0]["address_components"][2]["short_name"];
    $cidade = $json_retorno["results"][0]["address_components"][4]["short_name"];
    $estado = $json_retorno["results"][0]["address_components"][5]["short_name"];
    if ($bairro <> ""){
        $localizacao .= "Bairro: " . $bairro . " - ";
    }
    if ($cidade <> ""){
        $localizacao .= "Cidade: " . $cidade . " - ";
    }
    if ($estado <> ""){
        $localizacao .= "Estado: " . $estado;
    }
}
echo ("Sua localização atual:" . $localizacao);
?>

Boa Daniel! Neste caso Thiago, tudo que você precisa fazer é colocar esse código dentro do seu tema em uma função e usar. Agradeça ao Daniel pelo tempo e código que ele implementou! =)

Muito obrigado a todos pela ajuda. Irei utilizar esse código é retorno. Eu utilizei o javascript para olhar um geolocalizador e lá dentro fiz o If por cidade.. funcionou mas ficou muito lento. Assim que testar retorno aqui. Muito obrigado por toda a ajuda.