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 lokalizacji; Przekierowanie języka w WordPressie na podstawie geolokalizacji; Automatyczne przekierowanie języka w WordPressie; Wtyczka do przekierowania języka na podstawie geolokalizacji; Ustawienie przekierowania języka na podstawie lokalizacji użytkownika; Przełączanie języka w WordPressie na podstawie geolokalizacji; Przekierowanie odwiedzających stronę do odpowiedniego języka; Przekierowanie językowe z użyciem geolokalizacji w WordPressie; Jak zmienić język strony w zależności od lokalizacji; Konfiguracja 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

<?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:

  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.