Пытаюсь сделать плагин на вордпресс, который бы менял язык в зависимости от языка текущего пользователя, установленного в профиле.
Сам код работает отлично, если вставить его в fucntion.php, но если сделать из него плагин, не работает.
Суть в том, что код меняет язык через "switch_to_locale()", при этом меняет язык на язык пользователя, который сейчас залогинен, берется через "get_user_locale()" после проверки "is_user_logged_in()".
Но если запихать этот код в плагин, то получаем, что когда код срабатывает, пользователь еще не определен (нагуглил), но если же повесить определение пользователя на событие после инициализации ворпресс (init), то не сработает "switch_to_locale()".
Сам код (если очень сокращенно)
function current_user_locale_language() {
if (is_user_logged_in()) {
$logged_in_user_locale = get_user_locale();
if ( in_array( $logged_in_user_locale, array( 'en_US', 'en_AU', 'en_CA', 'en_GB' ) ) ) {
$user_locale = 'en_US';
} elseif ( in_array( $logged_in_user_locale, array( 'ru_RU', 'ru_UA' ) ) ) {
$user_locale = 'ru_RU';
} else {
$user_locale = get_locale();
}
} else {
$user_locale = get_locale();
}
return $user_locale;
}
switch_to_locale(current_user_locale_language());
Как правильно определять пользователя в цикле ворпресс в плагинах?