[Решено] Перевод полей ACF Same Fields Across Languages
Эта тема решена. Вот описание проблемы и ее решения.
Проблема: Клиент пытается перевести поле ACF и сталкивается с тем, что перевод не сохраняется в редакторе переводов WPML и не отображается на сайте, показывая вместо этого исходный язык. Решение: Мы рекомендуем использовать функцию
get_field_object()
вместо
get_field()
, чтобы получить не только значение, но и метку поля. Пример использования:
Также важно в настройках ACF-поля установить опцию возвращаемого значения на “Label” для корректного отображения. По вопросу сохранения перевода: перевод действительно сохраняется и его можно редактировать через WPML → Перевод строк.
Если данное решение не помогло или кажется неактуальным, рекомендуем открыть новый тикет в службе поддержки WPML. Также полезно проверить известные проблемы и убедиться, что у вас установлены последние версии тем и плагинов.
Это форум технической поддержки WPML – плагина для многоязычной WordPress.
Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.
Если вы временно закомментируете вывод — сохраняется ли перевод в таком случае?
Также рекомендуем обновить версии MySQL и PHP на вашем сервере.
Пожалуйста, протестируйте ситуацию, оставив активными только плагины WPML и WooCommerce — это поможет исключить влияние сторонних расширений.
Обратите внимание, что для корректной работы WPML важно использовать последнюю версию плагина WooCommerce. Убедитесь, что он обновлен.
Плагин WPML работает, Woocommerce тоже.
Я использую плагин Advanced custom fields для товаров, а чтобы его перевести использую Advanced Custom Fields Multilingual
Выбираю Same fields across the languages.
Главный язык сайта сначала был русский, потом я изменил его на латышский.
Перевод групп полей, которые выводятся на странице товара работает неккоректно.
Ввожу переводы - они сохраняются, но ни в админке ни на странице товара текст не меняется, остаётся только на одном языке
Мне нужно запросить временный доступ (WP-администратора и FTP) на Ваш сайт - предпочтительно к тестовому сайту, где проблема была воспроизведена, если это возможно - для того, чтобы лучше помочь. Вы найдете необходимые поля ниже поля для комментариев, когда Вы войдете, чтобы оставить свой следующий ответ. Информацию, которую Вы ведете является частной, что означает только Вы и я могу видеть и иметь доступ к ней.
Я проверил Ваш сайт, и на данный момент не вижу очевидной причины проблемы.
Вы пробовали для теста создать новую группу пользовательских полей, добавить туда несколько полей и попытаться их перевести? Также рекомендую попробовать использовать слаг поля не на кириллице, чтобы исключить возможную проблему с кодировкой.
Если проблема всё ещё возникает, мне потребуется создать копию Вашего сайта для более детального анализа. Для этого я могу временно установить один из плагинов — Duplicator или All-in-One WP Migration. Это позволит мне создать полную копию Вашего сайта и его содержимого.
Конечно же я пробовал.
Я написал в поддержку от безысходности ситуации.
Слаг делал не на кириллице, все равно, не выводит переводы во фронтенде, но ошибка с переводами пропадает из админки (что на скриншоте, когда пишет что не переведено, я сохраняю переводы, и опять пишет что не переведено, хотя все переведено)
Устанавливайте что хотите.Я бекап сайта сделал
Да, теперь я понимаю, в чём была проблема. После серии тестов мне удалось выяснить, почему переводы не отображаются.
Вы используете функцию get_field(), которая возвращает только значение поля, но не метку (label). Чтобы получить и метку, и значение, нужно использовать функцию get_field_object().
В Вашем случае, я локально заменил строку
$sostav = get_field('sostav');
на
$sostav = get_field_object('sostav');
и смог получить доступ к $sostav['value']. Я также показал это на скриншоте.
Кроме того, в настройках ACF-поля я изменил опцию возвращаемого значения на “Label” (этикетка) — это важно для корректного отображения.
Что касается вопроса “почему перевод не сохраняется в редакторе переводов?” — на самом деле, перевод сохраняется. Его можно просмотреть и изменить через WPML → Перевод строк.
Проблема возникает потому, что пакет строк был изначально создан на русском языке, а затем Вы сменили язык. Это вызывает некорректное отображение. Если вернуть язык по умолчанию, отображение снова будет корректным. Предполагаю, что в будущем это будет исправлено.
Хочу отметить, что отладка пользовательского кода выходит за рамки нашей технической поддержки WPML. Тем не менее, надеюсь, эта информация поможет Вам продвинуться в Вашем проекте.