Skip to main content
The cart is empty

Message

cURL failed. Error: The requested URL returned error: 503 Service Unavailable

Customizing hreflang to Use Language Code Only

Overview

By default, Falang for WordPress generates hreflang attributes using the full locale code (for example fr-FR, en-US, es-ES).

In some cases, you may prefer to use only the language code (for example fr, en, es) in your hreflang tags — especially if your site does not target specific regional variations.

This guide explains how to modify your theme’s functions.php file to achieve that.

1 – Open your theme’s functions.php file

You can find it in your active theme folder, usually at:

/wp-content/themes/your-theme/functions.php

Open this file in your code editor or from the WordPress admin area under
Appearance → Theme File Editor → functions.php.

2 – Add the custom function

Copy and paste the following PHP code at the end of the functions.php file:

/**
 * Modify Falang hreflang array to use only the language code (e.g., 'fr' instead of 'fr-FR')
 */
function change_hreflang(array $hreflangs): array {
    $newHreflangs = [];

    foreach ($hreflangs as $lang => $url) {
        // Extract the part before the dash ('fr' from 'fr-FR')
        $part = explode('-', $lang, 2)[0];
        $newHreflangs[$part] = $url;
    }

    return $newHreflangs;
}

/**
 * Hook into Falang hreflang generation
 */
add_filter('falang_hreflang', 'change_hreflang');

3 – How it works

Falang generates an array of hreflang values like this:

[
    'fr-FR' => 'https://example.com/fr/',
    'en-US' => 'https://example.com/en/',
]
  • The function change_hreflang() replaces each key (e.g. fr-FR) by its language code only (fr).
  • The filter add_filter('falang_hreflangs', 'change_hreflang') tells Falang to use your modified array

Result:

After adding this code, your site will output simplified hreflang tags like this:

<link rel="alternate" href="https://example.com/fr/" hreflang="fr" />
<link rel="alternate" href="https://example.com/en/" hreflang="en" />

instead of:

<link rel="alternate" href="https://example.com/fr/" hreflang="fr-FR" />
<link rel="alternate" href="https://example.com/en/" hreflang="en-US" />

Optional – Keep full code for specific languages

If you want to keep the full code for certain languages (like zh-CN or pt-BR), you can modify the function like this:

function change_hreflang(array $hreflangs): array {
    $keepFull = ['zh-CN', 'pt-BR']; // list of locales you want to keep
    $newHreflangs = [];

    foreach ($hreflangs as $lang => $url) {
        if (in_array($lang, $keepFull, true)) {
            $newHreflangs[$lang] = $url;
        } else {
            $part = explode('-', $lang, 2)[0];
            $newHreflangs[$part] = $url;
        }
    }

    return $newHreflangs;
}