Setting up a redirect on a wordpress site to a language subfolder

Last update: 22 Квітня, 2023

Category: Redirect, WordPress

Передісторія:

Був сайт без багатомовності. Російською. Було встановлено WPML та налаштовано +1 мову. Після цього було потрібно змінити мову за замовчуванням, але якщо зробити це – дуже багато скриптів виходили з ладу. Тож всі мови перенесені в підпапки, і налаштовано 301 редірект на потрібну мову в випадку, якщо наразі відкрито URL без мовного ярлика.

// Disabling WPML automatic redirect
function mytheme_do_not_redirect_city_post_type( $redirect, $post_id, $query ) {
    return false;
};
add_filter( 'wpml_is_redirected', mytheme_do_not_redirect_city_post_type, 10, 3 );

// Enable redirection to the desired language if the language is not in the language URL
function redir_to_uk() {
    if(!is_admin()){
        $url = $_SERVER['REQUEST_URI'];
        $ru = "/ru/";
        $uk = "/uk/";
        if( ( strpos($url, $ru) === false ) && ( strpos($url, $uk) === false ) ) {
            header('Location: https://' . $_SERVER['HTTP_HOST'] . '/uk' . $url, true, 301);
        }
    }
}
add_action('parse_request', 'redir_to_uk');

Описаний вище код потрібно додати до файлу functions.php