Snippet

Przekierowanie użytkowników do wersji językowej na podstawie lokalizacji w WordPressie

Jak przekierować użytkowników na język w zależności od lokalizacjiPrzekierowanie języka w WordPressie na podstawie geolokalizacjiAutomatyczne przekierowanie języka w WordPressieWtyczka do przekierowania języka na podstawie geolokalizacjiUstawienie przekierowania języka na podstawie lokalizacji użytkownikaPrzełączanie języka w WordPressie na podstawie geolokalizacjiPrzekierowanie odwiedzających stronę do odpowiedniego językaPrzekierowanie językowe z użyciem geolokalizacji w WordPressieJak zmienić język strony w zależności od lokalizacjiKonfiguracja automatycznego przekierowania języka 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

1<?php 2// Hook into 'init' to perform the redirection early in the WordPress loading process 3add_action('init', 'wp_dudecom_redirect_based_on_geolocation'); 4 5function wp_dudecom_redirect_based_on_geolocation() { 6 // Check if the user is already logged in or if it's an admin page 7 if (is_user_logged_in() || is_admin()) { 8 return; 9 } 10 11 // Check if the redirection has already been performed to prevent loops 12 if (isset($_COOKIE['wp_dudecom_language_redirect'])) { 13 return; 14 } 15 16 // Use a third-party service to get the user's geolocation 17 $user_ip = $_SERVER['REMOTE_ADDR']; 18 $geo_data = wp_dudecom_get_geolocation_data($user_ip); 19 20 if (!$geo_data || !isset($geo_data['country_code'])) { 21 return; 22 } 23 24 // Define language redirection rules based on country codes 25 $language_redirects = array( 26 'FR' => '/fr/', // Redirect French users to the French version 27 'DE' => '/de/', // Redirect German users to the German version 28 'ES' => '/es/', // Redirect Spanish users to the Spanish version 29 // Add more country codes and corresponding language paths as needed 30 ); 31 32 $country_code = $geo_data['country_code']; 33 34 // Check if there is a language path for the user's country 35 if (array_key_exists($country_code, $language_redirects)) { 36 $redirect_url = home_url($language_redirects[$country_code]); 37 38 // Set a cookie to prevent repeated redirections 39 setcookie('wp_dudecom_language_redirect', '1', time() + 3600, COOKIEPATH, COOKIE_DOMAIN); 40 41 // Perform the redirection 42 wp_redirect($redirect_url); 43 exit; 44 } 45} 46 47function wp_dudecom_get_geolocation_data($ip) { 48 // Example using a free geolocation API (replace with a real API key and endpoint) 49 $api_url = 'https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY&ip=' . $ip; 50 51 $response = wp_remote_get($api_url); 52 53 if (is_wp_error($response)) { 54 return false; 55 } 56 57 $body = wp_remote_retrieve_body($response); 58 $data = json_decode($body, true); 59 60 return $data; 61} 62?>

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:

  1. 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.
  2. 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.
  3. Wstaw kod: Skopiuj i wklej podany kod do pliku functions.php lub do pliku własnej wtyczki.
  4. Zaktualizuj szczegóły API: Zaktualizuj $api_url w funkcji wp_dudecom_get_geolocation_data o rzeczywisty punkt końcowy API geolokalizacji oraz klucz API.
  5. 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.
  6. Zapisz zmiany: Zapisz zmiany w pliku functions.php lub w pliku własnej wtyczki.
  7. 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.