Skip navigation

Эта тема решена. Вот описание проблемы и ее решения.

Проблема:
Вы столкнулись с проблемой, что страны не отображаются в алфавитном порядке в выпадающем списке на странице оформления заказа на русском языке, несмотря на использование кастомного кода и плагинов WPML.
Решение:
Мы обнаружили, что проблема сохраняется даже при отключении плагинов WPML. Это указывает на то, что проблема связана с настройками вашей базы данных. WooCommerce использует функцию

asort()

в PHP для сортировки, и неправильная сортировка может быть связана с настройками сопоставления базы данных, которые не поддерживают кириллические символы. Рекомендуем проверить и изменить кодировку базы данных, таблиц и столбцов на

utf8mb4_unicode_520_ci

, чтобы обеспечить корректную обработку кириллических символов.

Если данное решение оказалось неактуальным или не помогло в вашем случае, рекомендуем открыть новый тикет поддержки. Также настоятельно рекомендуем проверить известные проблемы, убедиться в актуальности версии исправления и подтвердить, что у вас установлены последние версии тем и плагинов.

Это форум технической поддержки WPML – плагина для многоязычной WordPress.

Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.

Помечено: 

Эта тема содержит 0 ответ, имеет 0 голоса.

Последнее обновление: Andrey 1 месяц, 3 недели назад.

При содействии: Andrey.

Автор Записи
5 марта, 2025 на 1:52 пп #16779185

innarL

Предыстория вопроса:
I am trying to sort countries in alphabetical order on the checkout page for all languages on my site, which has 3 languages. I attempted to fix this with custom code, but it didn't work. I also contacted Pressable support, and they recommended reaching out to WPML support.

Симптомы:
Countries are not displayed in alphabetical order in the country drop-down list on the checkout page for two of the three languages. Only the main language displays them correctly.

Вопросы:
How can I sort the countries in alphabetical order for all languages?

5 марта, 2025 на 5:57 пп #16780212

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Спасибо за обращение в службу поддержки WPML.

Я сделал несколько тестов на чистой установке с WPML и WooCommerce, но не могу воспроизвести проблему.

Pressable это плагин, который Вы используете? Какой будет результат, если временно деактивировать все плагины кроме WPML, WooCommerce Multilingual & Multicurrency и WooCommerce?

5 марта, 2025 на 8:55 пп #16780612

innarL

Pressable - это хостинг от разработчиков WooCommerce (Automattic).

Деактивировали все плагины, кроме WPML, WooCommerce Multilingual & Multicurrency и WooCommerce, проблема сохраняется.

Текущий сайт, о котором идет речь - это новый сайт для редизайна. Сейчас заметили, что на основном сайте (с другой темой и другим набором плагинов, но с WPML) та же проблема с отображением стран, просто мы ее не замечали 5 лет)

Какие есть еще варианты решения?

6 марта, 2025 на 10:23 пп #16785591

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Мне нужно запросить временный доступ (WP-администратора и FTP) на Ваш сайт - предпочтительно к тестовому сайту, где проблема была воспроизведена, если это возможно - для того, чтобы лучше помочь. Вы найдете необходимые поля ниже поля для комментариев, когда Вы войдете, чтобы оставить свой следующий ответ. Информацию, которую Вы ведете является частной, что означает только Вы и я могу видеть и иметь доступ к ней.

Дайте мне знать, если я могу сделать копию Вашего сайта для дальнейших тестов.

7 марта, 2025 на 9:46 дп #16787214

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Спасибо получил детали доступа. Так как я не могу воспроизвести локально проблему, хочу уточнить Вы модифицируете каким-то образом данный список стран на Вашем сайте?

7 марта, 2025 на 10:02 дп #16787290

innarL

Не уверен, что понимаю ваш вопрос.
Ничего со странами и их списком не делаем.

Список стран появляется в корзине и чекауте, когда мы вводим страны, в которые осуществляем доставку, в настройках Woocommerce (Woo > Settings > General).

(Плагин доставки Montonio пробовали отключать - проблема сохраняется).

7 марта, 2025 на 10:25 дп #16787418

innarL

Еще такое наблюдение, возможно это важно.

В эстонской версии страны отсортированы по алфавиту.

В рус и англ версии страны не по алфавиту, НО ОНИ СОХРАНЯЮТ (повторяют) тот же порядок стран, что и в эстонской версии.

То есть, например, на эстонском Америка - Ameerika, она идет первой в списке. На рус это "США" и она тоже идет первой в списке, на англ это "USA" и она тоже идет первой в списке.

11 марта, 2025 на 1:30 пп #16801971

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Я проверяю проблему. Дам Вам знать, когда будет больше новостей.

12 марта, 2025 на 3:15 пп #16807985

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Спасибо за ожидание. Я провел более детальную проверку по вашей проблеме и вот мои наблюдения:
1. Проблема с сортировкой стран в алфавитном порядке в выпадающем списке на странице оформления заказа возникает только на русском языке.
2. Ошибка сохраняется даже при отключенных плагинах WPML. Вы можете временно деактивировать WPML на тестовом сайте, затем перейти в Settings → General и выбрать русский язык в поле Site Language. После этого проверьте страницу оформления заказа – сортировка останется некорректной.

Полагаю, что проблема связана с вашей текущей установкой, поскольку я не смог воспроизвести ее на чистой версии. Так как ошибка проявляется даже без WPML, ее решение выходит за рамки возможностей этого плагина.

На основе моих наблюдений WooCommerce использует asort() в PHP для сортировки стран, а неправильная сортировка может быть связана с текущими настройками базы данных. Возможно, ваше сопоставление базы данных и таблиц (database collation) не поддерживает кириллические символы, что приводит к некорректной сортировке.

Рекомендую проверить и изменить кодировку базы данных, таблиц и столбцов на utf8mb4_unicode_520_ci, что должно обеспечит правильную обработку кириллических символов.

Screenshot-2025-03-12-at-16-54-49.png
Screenshot-2025-03-12-at-16-54-40.png
Screenshot-2025-03-12-at-16-54-23.png
13 марта, 2025 на 7:32 дп #16810049

innarL

Andrey, спасибо большое за ваше время и желание помочь!

Я также написала в форум woo и получила ответ, тикет здесь - https://wordpress.org/support/topic/country-sorting-not-alphabetical-in-woocommerce/

В связи с этим, возможно ли тогда наш текущий тикет отправить как запрос на функцию WPML? Чтобы на мультиязычном сайте страны, отличные от EN, выводились в алфавитном порядке?

Спасибо

Мила

13 марта, 2025 на 3:07 пп #16812636

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Спасибо за информацию. Вы очень подробно и грамотно описали проблему при обращении в поддержку WooCommerce.

Я не могу гарантировать, что проблема может быть решена с нашей стороны. Скорее всего, она связана с Вашей текущей установкой.

Для дополнительной проверки я создал новый тестовый сайт. Попробуйте воспроизвести проблему на нём. Ссылку Вы найдете в следующем приватном сообщении. Я также потом его проверю, если получится воспроизвести.

14 марта, 2025 на 8:18 пп #16818524

innarL

Andrey, спасибо!

Я не смогла воспроизвести проблему на вашем тестовом сайте - страны сортируются корректно.

Могли бы вы еще подсказать, какая кодировка базы данных на этом тестовом сайте?

На моем сайте latin1_swedish_ci, может быть причина в этом? Может ли помочь, если изменить кодировку отдельных таблиц на utf8mb4_unicode_520_ci?

Спасибо за ваше время,

Мила

17 марта, 2025 на 2:56 пп #16825889

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Добрый день, Мила.

На данном тестовом сайте WordPress таблицы имеют кодировку utf8mb4_unicode_ci, остальные utf8mb4_unicode_520_ci.

Я не могу с 100% уверенностью сказать, что это является причиной проблемы. Но, я все же предполагаю, что это может решить проблему. На двух разных тестовых сайтах, мы не смогли воспроизвести проблему, что указывает на вероятною причину проблемы в базе данных. На моей тестовой локальной установке все таблицы имеют кодировку utf8mb4_unicode_520_ci.

Попробуйте изменить все Ваши таблицы на utf8mb4_unicode_520_ci. Важно, чтобы столбцы самих таблиц (columns) также имели кодировку utf8mb4_unicode_520_ci.

Alter-table-wp_posts-AdminerEvo(1).png
Database-sb-green-sampler-AdminerEvo.png
21 марта, 2025 на 7:30 дп #16842835

innarL

Andrey, здравствуйте.

Ничего не помогло, ни смена кодировки, ни кастомные коды, ни танцы с бубнами)

В данный момент я пока нашла только такое решение: в настройках Woo установила "продавать во все страны, кроме" и в поле стран-исключений внесла почти все 200 стран, в которые не продаем (продаем только в 29 стран).

Пришлось потратить время на заполнение списка исключений, но теперь в корзине и чекауте на всех языках страны отображаются по алфавиту.

Пока оставляем так)

Спасибо большое за ваше время

Мила

21 марта, 2025 на 5:49 пп #16846091

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+03:00)

Спасибо за апдейт, Мила.

Это очень умное решение. Конечно, остается загадкой почему так работает, а по другому нет. Но, решение все же неплохое, и нет смысла, чтобы тратить больше времени на отладку этой проблемы.

Хороших Вам выходных)