Using WordPress ‘core_version_check_locale’ PHP filter

The core_version_check_locale WordPress PHP filter allows you to modify the locale requested for WordPress core translations.

Usage

add_filter('core_version_check_locale', 'your_custom_function_name');
function your_custom_function_name($locale) {
    // your custom code here
    return $locale;
}

Parameters

  • $locale: (string) The current locale.

More information

See WordPress Developer Resources: core_version_check_locale

Examples

Change locale to French

Change the locale to French (fr_FR) for core translations.

add_filter('core_version_check_locale', 'change_locale_to_french');
function change_locale_to_french($locale) {
    $locale = 'fr_FR';
    return $locale;
}

Set locale based on user preference

Set the locale based on a user’s preference stored in user meta.

add_filter('core_version_check_locale', 'set_locale_based_on_user_preference');
function set_locale_based_on_user_preference($locale) {
    $user_id = get_current_user_id();
    $user_locale = get_user_meta($user_id, 'preferred_locale', true);
    if (!empty($user_locale)) {
        $locale = $user_locale;
    }
    return $locale;
}

Force locale for a specific user role

Force the locale to Spanish (es_ES) for users with the ‘editor’ role.

add_filter('core_version_check_locale', 'force_locale_for_editors');
function force_locale_for_editors($locale) {
    if (current_user_can('editor')) {
        $locale = 'es_ES';
    }
    return $locale;
}

Change locale based on browser language

Change the locale based on the user’s browser language.

add_filter('core_version_check_locale', 'set_locale_based_on_browser_language');
function set_locale_based_on_browser_language($locale) {
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        $browser_locale = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        if ($browser_locale == 'de') {
            $locale = 'de_DE';
        }
    }
    return $locale;
}

Set locale based on a custom query parameter

Set the locale based on a custom query parameter in the URL.

add_filter('core_version_check_locale', 'set_locale_based_on_query_parameter');
function set_locale_based_on_query_parameter($locale) {
    if (isset($_GET['custom_locale'])) {
        $custom_locale = sanitize_text_field($_GET['custom_locale']);
        if (!empty($custom_locale)) {
            $locale = $custom_locale;
        }
    }
    return $locale;
}