Wordpress Plugin за Redirect

D.Ivanov

Well-Known Member
Интересува ме как да направя така, че посетителите от определена страна да ги пращам на един сайт, а другите да си влизат в този сайт.

Пример:

Искам, когато някой от USA влезе на този линк, който е landing page: mywebsite.com/page1 и има бутон за вход ENTER, след натискане на бутона да отива на друг линк, който аз мога да посоча.

Всички други посетители от всички други страни след натискане на бутона ENTER да отиват в mywebsite.com
 
От: Wordpress Plugin за Redirect

За конкретен Wordpress плугин не се сещам, но ето какво скалъпих набързо.

Накратко, преди всичко ти трябва база за сравнение, за да можеш да разбереш кое IP от коя държава е, след което проверяваш и правиш редирект-а ако е необходим.

Значи, правиш си бутона ENTER да ти сочи към началната, в случая mywebsite.com, след което добавяш следният код в functions.php на темплейта си:

Код:
add_action('get_header', 'check_country'); // Казваш на WP да зареди функцията check_country() в hook-а get_header.

function check_country(){
    $destination = 'http://google.com'; // Задаваш адреса към който искаш да редиректне в случай, че отговаря на изискванията по-долу.
    $ip_addr = $_SERVER['REMOTE_ADDR']; // Взимаш IP адреса на посетителя на сайта ти.
    $get_details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); // Взимаш данните за IP адреса от въпросният сайт.
    
    if( is_home() && $get_details->country == 'US' ){ // Проверяваш дали потребителя е на началната страница и дали е от US.
    	wp_redirect($destination); // Редиректваш потребителя към сайта, който си задал в $destination
	exit; // Спираш изпълнението на код-а по-нататък.
    }
}

Съответно си го редактираш както ти трябва на теб, като зададеш на къде да сочи въпросната връзка, в моят случай сочи към google.com, в твоят случай си въвеждаш твоят адрес, след което то си проверява и в случай, че потребителите ти са от US.

Сложих и коментари, така, че да ти е ясно кое какво прави.

П.С > Това може би не е най-удачният вариант по ред причини, но е сравнително лесен за имплементация вариант. Един от недостатъците на този вариант е, че ползваш API-то на външен сайт и при всяко влизане ще ти се отваря нова връзка за да провери това IP от къде идва, което ще забави отварянето на сайта ти, ако достъпа до този сайт е по-бавен или не се осъществи, но тази услуга поне при мен работи доста добре и с прилична скорост ;)

П.С2 > Сега обърнах внимание, че дневно имаш право на 1.000 проверки, така, че ако сайта ти е силно посещаван, ще ти се наложи да потърсиш друго по-добро API, но принципа е един и същ.
 
От: От: Wordpress Plugin за Redirect

Благодаря ти много за отделеното време и подробното обяснение! :)

Жалко, че не мога да ти дам репутация ще опитам по-късно.

За конкретен Wordpress плугин не се сещам, но ето какво скалъпих набързо.

Накратко, преди всичко ти трябва база за сравнение, за да можеш да разбереш кое IP от коя държава е, след което проверяваш и правиш редирект-а ако е необходим.

Значи, правиш си бутона ENTER да ти сочи към началната, в случая mywebsite.com, след което добавяш следният код в functions.php на темплейта си:

Код:
add_action('get_header', 'check_country'); // Казваш на WP да зареди функцията check_country() в hook-а get_header.

function check_country(){
    $destination = 'http://google.com'; // Задаваш адреса към който искаш да редиректне в случай, че отговаря на изискванията по-долу.
    $ip_addr = $_SERVER['REMOTE_ADDR']; // Взимаш IP адреса на посетителя на сайта ти.
    $get_details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); // Взимаш данните за IP адреса от въпросният сайт.
    
    if( is_home() && $get_details->country == 'US' ){ // Проверяваш дали потребителя е на началната страница и дали е от US.
    	wp_redirect($destination); // Редиректваш потребителя към сайта, който си задал в $destination
	exit; // Спираш изпълнението на код-а по-нататък.
    }
}

Съответно си го редактираш както ти трябва на теб, като зададеш на къде да сочи въпросната връзка, в моят случай сочи към google.com, в твоят случай си въвеждаш твоят адрес, след което то си проверява и в случай, че потребителите ти са от US.

Сложих и коментари, така, че да ти е ясно кое какво прави.

П.С > Това може би не е най-удачният вариант по ред причини, но е сравнително лесен за имплементация вариант. Един от недостатъците на този вариант е, че ползваш API-то на външен сайт и при всяко влизане ще ти се отваря нова връзка за да провери това IP от къде идва, което ще забави отварянето на сайта ти, ако достъпа до този сайт е по-бавен или не се осъществи, но тази услуга поне при мен работи доста добре и с прилична скорост ;)

П.С2 > Сега обърнах внимание, че дневно имаш право на 1.000 проверки, така, че ако сайта ти е силно посещаван, ще ти се наложи да потърсиш друго по-добро API, но принципа е един и същ.
 
От: От: Wordpress Plugin за Redirect

Благодаря ти много за отделеното време и подробното обяснение! :)

Жалко, че не мога да ти дам репутация ще опитам по-късно.

Удоволствието, че си помогнал на някой е по-голямо от репутацията ;)

Надявам се да ти е свършил работа кода ;)
 
От: Wordpress Plugin за Redirect

Аз ти предлагам по удобен начин ако имаш cloudflare на сайта постави този код в functions.php на темплейта си.

$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"]; // Взимаш кода на държавата от която е посетителя
$requred_country = 'BG'; // Тука слагаш от коя държава искаш да е потребителя
<?php if($country_code == $required_country) {
echo "Браво ти си от България"; // Правиш някакво действие ако потребителя е от България
}
else {
echo "За жалост ти не си от България и не можеш да продължиш"; // Правиш някакво действие ако потребителя НЕ е от България
} ?>

В твоя случай ще стане така :
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"]; // Взимаш кода на държавата от която е посетителя
$requred_country = 'BG'; // Тука слагаш от коя държава искаш да е потребителя
$urltoredirect = "http://sait.com/landing_page_2"; // Тук задаваш къде искаш да отиде потребителя ако НЕ е от държавата която си задал
<?php if($country_code == $required_country) {
echo "Браво ти си от България"; // Правиш някакво действие ако потребителя е от България
}
else {
echo '<meta http-equiv="refresh" content="0; url='.$urltoredirect.'" />'; // Правиш някакво действие ако потребителя НЕ е от България
} ?>
 

Горе