Eu ocasionalmente referência produtos em meus vários sites, e, geralmente, associá-los a Amazon para qualquer pessoa interessada em comprá-los. Há muito tempo que eu usei para ligar com um afiliados amazon ligar, mas nunca ganhou nada com isso como meus leitores típico é bem distribuída ao redor do mundo. Infelizmente Amazon não fornecem uma maneira de redirecionar os visitantes para o seu site amazon locais, mantendo a pagamentos afiliadas. Existem várias soluções lá fora, mas todos os que eu encontrados tive problemas com eles, então eu desenvolvi meu próprio.
Eu poderia desenvolvê-lo em um plugin para lançamento se houver demanda suficiente. Entretanto, o código está abaixo. Você precisará fazer algumas modificações para que corresponda ao endereço do seu site e aos códigos de afiliados da Amazon
<?php /** * Nome do plugin: Redirecionamento de afiliados da Amazon * URI do plugin: https://diymediahome.org/ * Descrição: Redireciona todos os links de afiliados da Amazon para uma loja local da Amazon, dependendo da localização dos visitantes. * Versão: 1.0 * Autor: Jon P Scaife * URI do autor: https://jonscaife.com * Licença: GPL12 */ função process_link() { $debug = false; //Detectar a localização do visitante de IP se (isset($_SERVIDOR['HTTP_CLIENT_IP'])) { $real_ip_address = $ _SERVER['HTTP_CLIENT_IP']; } se (isset($_SERVIDOR['HTTP_X_FORWARDED_FOR'])) { $real_ip_address = $ _SERVER['HTTP_X_FORWARDED_FOR']; } outro { $real_ip_address = $ _SERVER['REMOTE_ADDR']; } função curl_get_contents($url) { $CH = curl_init(); curl_setopt($CH, CURLOPT_HEADER, 0); curl_setopt($CH, CURLOPT_RETURNTRANSFER, 1); curl_setopt($CH, CURLOPT_URL, $url); $data = curl_exec($CH); curl_close($CH); retornar $ data; } $iptolocation = 'https://ip-api.com/php/ ' . $real_ip_address; $ipreply = @unserialize(curl_get_contents($iptolocation)); $iplocation = $ ipreply['Código do país']; //Detectar o idioma do visitante no navegador $ browserlang = substr($_SERVIDOR['HTTP_ACCEPT_LANGUAGE'], 0, 2); //Detectar o idioma da página que o visitante está usando E se (isset($_OBTER['lang'])) { $userlang = $ _GET['lang']; } outro { $userlang = "SOBRE"; } //foi um link passado E se (isset($_OBTER['addr'])) { $link_original = $ _GET['addr']; } //Decida o melhor site amazon com base nos dados detectados $ linkpartone = $ _GET['creativeASIN']; interruptor ($iplocation) { caso 'GB': $link ="https://www.amazon.co.uk/dp/".$linkpartone."/ref = nosim?tag = dimeho-21"; pausa; caso 'IE': $link ="https://www.amazon.co.uk/dp/".$linkpartone."/ref = nosim?tag = dimeho-21"; pausa; case 'US': $link ="https://www.amazon.com/dp/".$linkpartone."/ref = nosim?tag = jonstech-20"; pausa; Casas 'CA': $link ="https://www.amazon.ca/dp/".$linkpartone."/ref = nosim?tag = dimeho-20"; pausa; case 'CN': $link ="https://www.amazon.cn/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'HK': $link ="https://www.amazon.cn/dp/".$linkpartone."/ref = nosim?tag ="; pausa; caso 'MO': $link ="https://www.amazon.cn/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'IN': $link ="https://www.amazon.in/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'JP': $link ="https://www.amazon.co.jp/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'FR': $link ="https://www.amazon.fr/dp/".$linkpartone."/ref = nosim?tag = Dimeho02-21"; pausa; case 'CH': $link ="https://www.amazon.fr/dp/".$linkpartone."/ref = nosim?tag = Dimeho02-21"; pausa; case 'BE': $link ="https://www.amazon.fr/dp/".$linkpartone."/ref = nosim?tag = Dimeho02-21"; pausa; caso 'MC': $link ="https://www.amazon.fr/dp/".$linkpartone."/ref = nosim?tag = Dimeho02-21"; pausa; Casas 'LU': $link ="https://www.amazon.fr/dp/".$linkpartone."/ref = nosim?tag = Dimeho02-21"; pausa; casas de ': $link ="https://www.amazon.de/dp/".$linkpartone."/ref = nosim?tag = dimeho0f-21"; pausa; case 'CZ': $link ="https://www.amazon.de/dp/".$linkpartone."/ref = nosim?tag = dimeho0f-21"; pausa; case 'IT': $link ="https://www.amazon.it/dp/".$linkpartone."/ref = nosim?tag = diymediahome-21"; pausa; case 'NL': $link ="https://www.amazon.nl/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'ES': $link ="https://www.amazon.es/dp/".$linkpartone."/ref = nosim?tag = diymediahom05-21"; pausa; caso 'MX': $link ="https://www.amazon.com.mx/dp/".$linkpartone."/ref = nosim?tag ="; pausa; Caixa 'AU': $link ="https://www.amazon.com.au/dp/".$linkpartone."/ref = nosim?tag ="; pausa; case 'BR': $link ="https://www.amazon.com.br/dp/".$linkpartone."/ref = nosim?tag ="; pausa; omissão: $link ="https://www.amazon.com/dp/".$linkpartone."/ref = nosim?tag = jonstech-20"; } se($debug == true) { eco "1. $iplocation. 2. $idioma do navegador. 3. $userlang. 4. $link"; } outro { cabeçalho('Localização: '. $ link); a(); } } se (isset($_OBTER['addr'])) process_link(); //criar filtro para substituir links amazon com redirecionamento interno inc um código aleatório para evitar cache function modify_amazon_affiliate_links($conteúdo) { $content = str_replace('<um rel ="nofollow" href ="https://www.amazon ', '<escrita>var ran_var = Math.random();</escrita><um estilo ="background: nenhum;" rel ="nofollow" onclick ="location.href=this.href+\'?ran=\'+ran_var;return false;" alvo ="_em branco" href ="https://jonscaife.com/wp-content/plugins/amazon-affiliates-redirect.php?addr = ', $conteúdo); return str_replace('<um href ="https://www.amazon ', '<escrita>var ran_var = Math.random();</escrita><um estilo ="background: nenhum;" rel ="nofollow" onclick ="location.href=this.href+\'?ran=\'+ran_var;return false;" alvo ="_em branco" href ="https://jonscaife.com/wp-content/plugins/amazon-affiliates-redirect.php?addr = ', $conteúdo); } add_filter( 'o conteúdo', 'modify_amazon_affiliate_links' ) ?>
Nota - o código é atualmente um rascunho inicial. Funciona, mas não faz uso de parte da detecção que pode fazer. Não tem uma página de configurações para os IDs de associados, e usa um endereço de site codificado, em vez de um redirecionamento invisível. No entanto, ele usa javascript do lado do cliente para gerar um URL de redirecionamento exclusivo todas as vezes para evitar que qualquer sistema de cache cause detecção de localização incorreta.
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”