Przekierowanie użytkowników do wersji językowej na podstawie lokalizacji w WordPressie
Objaśnienie
Oto prosty sposób na automatyczne przekierowywanie odwiedzających Twoją stronę internetową do odpowiedniej wersji językowej w zależności od ich lokalizacji. To podejście wykorzystuje dane geolokalizacyjne, aby określić, skąd pochodzą Twoi odwiedzający, i przekierowuje ich na odpowiednią stronę językową.
Jak to działa:
- Kod włącza się w wczesny proces ładowania WordPressa, aby sprawdzić lokalizację odwiedzającego.
- Jeśli odwiedzający jest zalogowany lub znajduje się na stronie administracyjnej, nie następuje przekierowanie, aby nie zakłócać jego sesji.
- Sprawdza, czy przekierowanie już miało miejsce, używając ciasteczka, aby zapobiec pętli.
- Adres IP odwiedzającego jest używany do pobrania danych geolokalizacyjnych z usługi zewnętrznej.
- Na podstawie kodu kraju odwiedzającego kod sprawdza, czy dostępna jest odpowiadająca wersja językowa.
- Jeśli znaleziono dopasowanie, odwiedzający jest przekierowywany na odpowiednią stronę językową.
- Ustawiane jest ciasteczko, aby zapewnić, że przekierowanie nie nastąpi wielokrotnie w tej samej sesji.
Rzeczy do zapamiętania:
- Musisz zastąpić adres URL API w miejscu docelowym rzeczywistą usługą geolokalizacyjną oraz kluczem API.
- Dostosuj tablicę $language_redirects, aby dodać więcej kodów krajów i ścieżek językowych w razie potrzeby.
- To ustawienie jest idealne dla stron z wieloma wersjami językowymi zorganizowanymi w podkatalogach (np. /fr/ dla francuskiego).
Wdrażając to, Twoja strona automatycznie poprowadzi użytkowników do treści w ich preferowanym języku, poprawiając ich doświadczenia podczas przeglądania.
Kod
<?php
// Hook into 'init' to perform the redirection early in the WordPress loading process
add_action('init', 'wp_dudecom_redirect_based_on_geolocation');
function wp_dudecom_redirect_based_on_geolocation() {
// Check if the user is already logged in or if it's an admin page
if (is_user_logged_in() || is_admin()) {
return;
}
// Check if the redirection has already been performed to prevent loops
if (isset($_COOKIE['wp_dudecom_language_redirect'])) {
return;
}
// Use a third-party service to get the user's geolocation
$user_ip = $_SERVER['REMOTE_ADDR'];
$geo_data = wp_dudecom_get_geolocation_data($user_ip);
if (!$geo_data || !isset($geo_data['country_code'])) {
return;
}
// Define language redirection rules based on country codes
$language_redirects = array(
'FR' => '/fr/', // Redirect French users to the French version
'DE' => '/de/', // Redirect German users to the German version
'ES' => '/es/', // Redirect Spanish users to the Spanish version
// Add more country codes and corresponding language paths as needed
);
$country_code = $geo_data['country_code'];
// Check if there is a language path for the user's country
if (array_key_exists($country_code, $language_redirects)) {
$redirect_url = home_url($language_redirects[$country_code]);
// Set a cookie to prevent repeated redirections
setcookie('wp_dudecom_language_redirect', '1', time() + 3600, COOKIEPATH, COOKIE_DOMAIN);
// Perform the redirection
wp_redirect($redirect_url);
exit;
}
}
function wp_dudecom_get_geolocation_data($ip) {
// Example using a free geolocation API (replace with a real API key and endpoint)
$api_url = 'https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY&ip=' . $ip;
$response = wp_remote_get($api_url);
if (is_wp_error($response)) {
return false;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
return $data;
}
?>
Instrukcja
Lokalizacja pliku: Dodaj poniższy kod do pliku functions.php
swojego motywu lub do pliku własnej wtyczki.
Wymagania wstępne:
- Upewnij się, że masz usługę API geolokalizacji oraz klucz API.
- Organizuj swoją stronę z wersjami językowymi w podkatalogach (np. /fr/ dla języka francuskiego).
Kroki wdrożenia:
- Dostęp do plików WordPress: Użyj klienta FTP lub menedżera plików swojego dostawcy hostingu, aby uzyskać dostęp do plików instalacji WordPress.
- Znajdź plik: Przejdź do katalogu swojego motywu i otwórz plik
functions.php
. Alternatywnie, stwórz lub otwórz plik własnej wtyczki, jeśli wolisz trzymać niestandardowy kod oddzielnie od swojego motywu. - Wstaw kod: Skopiuj i wklej podany kod do pliku
functions.php
lub do pliku własnej wtyczki. - Zaktualizuj szczegóły API: Zaktualizuj
$api_url
w funkcjiwp_dudecom_get_geolocation_data
o rzeczywisty punkt końcowy API geolokalizacji oraz klucz API. - Dostosuj przekierowania językowe: Zmodyfikuj tablicę
$language_redirects
, aby zawierała kody krajów oraz odpowiadające im ścieżki językowe istotne dla Twojej strony. - Zapisz zmiany: Zapisz zmiany w pliku
functions.php
lub w pliku własnej wtyczki. - Przetestuj przekierowanie: Odwiedź swoją stronę z różnych lokalizacji (lub użyj VPN), aby upewnić się, że użytkownicy są przekierowywani do odpowiedniej wersji językowej w zależności od ich lokalizacji.
Aby uzyskać dalszą pomoc lub wdrożyć bardziej zaawansowane funkcjonalności, rozważ skontaktowanie się z wp-dude.com w celu uzyskania fachowego wsparcia WordPress.