Support Log in

24. URL Filters

Developer Guide
Prefer video? Watch the Lang Forge tutorials 9 short guides covering every feature Watch

Filters that modify URL generation for multilingual routing.

Geolocation-Based Language Redirect

php
// Redirect visitors to their preferred language based on geolocation
add_action('template_redirect', function () {
    if (isset($_COOKIE['lf_lang_chosen'])) return;
    if (!is_front_page()) return;

    $current = lf_get_current_language();
    $default = lf_get_default_language();
    if ($current !== $default) return;

    // Detect country from IP (using a hypothetical geolocation function)
    $country = my_geoip_country();
    $country_to_lang = [
        'DE' => 'de',
        'AT' => 'de',
        'CH' => 'de',
        'US' => 'en',
        'GB' => 'en',
    ];

    if (isset($country_to_lang[$country])) {
        $preferred = $country_to_lang[$country];
        $languages = lf_get_languages();
        if (isset($languages[$preferred]) && $preferred !== $default) {
            $core = LF_Core::instance();
            $url = $core->get_language_url($preferred);
            setcookie('lf_lang_chosen', '1', time() + 86400 * 30, '/');
            wp_redirect($url);
            exit;
        }
    }
}, 5);

Custom Rewrite Rules for Language Prefixes

php
// Add custom rewrite rules that respect language prefixes
$format = get_option('lf_url_format', 'directory');

if ($format === 'directory') {
    add_rewrite_rule(
        '^([a-z]{2})/my-api/(.+)$',
        'index.php?lang=$matches[1]&my_api=$matches[2]',
        'top'
    );
}
Example: Canonical URL for translated pages
php
add_action('wp_head', function () {
    if (is_singular()) {
        $canonical = get_permalink();
        echo '<link rel="canonical" href="' . esc_url($canonical) . '">' . "n";
    }
}, 1);

Forge AI Assistant Online

Hi! I'm the Lang Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs