WPML
Статус
Решено
Заявлено для
WPML Multilingual CMS 3.1.9.5
Решено в
3.1.9.7

Обзор проблемы

  1. Перейдите в меню и создайте его на языке по умолчанию.
  2. Попробуйте создать меню на дополнительном языке.
  3. После сохранения Вы получите ошибку 404.

Обходное решение

Эта проблема была решена в WPML 3.1.9.7


Вам следует обновить WPML до последней версии, чтобы устранить эту проблему

Если Вы не хотите или не можете обновить WPML, выполните следующие действия:


  1. Скачайте обновлённую версию iclNavMenu.class.php

  2. Используйте её для замены sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php:
    Скорее всего, это означает, что Вам нужно использовать FTP-клиент и загрузить файл в sitepress-multilingual-cms/inc/wp-nav-menus: если появится запрос на перезапись существующего файла, просто подтвердите его.

В случае возникновения проблем


Если Вы столкнулись с любой из этих проблем:

  • Fatal error: Call to undefined method SitePress::get_setting() in /wp-content/plugins/sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php on line 121

  • PHP Fatal error: Call to undefined function wpml_prepare_in() in /wp-content/plugins/sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php on line 548

  • Белая/пустая страница

Выполните следующие действия:

  1. Перейдите в «WPML» -> «Поддержка»

  2. Нажмите на «информация для отладки»: Вы увидите серое текстовое поле с большим количеством информации (это объект JSON)

  3. Скопируйте содержимое текстового поля в текстовый файл и назовите этот файл как хотите: лучше использовать расширение «json», но это не обязательно

  4. Создайте нового пользователя WordPress с правами администратора для отладки проблемы

  5. Установите бесплатный плагин «Duplicator» (здесь).
    При желании Вы можете использовать другой плагин, но следующие инструкции относятся именно к Duplicator (хотя их можно легко адаптировать и для других плагинов)

  6. Создайте новый пакет:

    1. Перейдите в «Duplicator» -> «Пакеты»

    2. Нажмите «Создать новый»

    3. Пройдите шаги мастера, оставив все настройки по умолчанию (при желании Вы можете исключить некоторые файлы, которые, по Вашему мнению, не нужны или сделают пакет слишком большим, например, файлы в папке «uploads»)

    4. Как только снимок будет готов, скачайте файлы «installer» и «package»

  7. Создайте папку и поместите в неё файлы из шагов 3 и 6.4 (то есть текстовый файл с информацией для отладки, установщик и пакет).

  8. Заархивируйте эту папку в формате ZIP и загрузите её на Google Drive, Dropbox или аналогичный сервис (или загрузите всю папку без архивирования и поделитесь ей)

  9. Перейдите на наш форум поддержки и создайте запрос в службу поддержки со следующим заголовком: «Workaround issues – Saving menus in non default language leads to 404 error»: мы попросим Вас в приватном режиме поделиться файлами, которые Вы сохранили на шаге 8.

Если Вы используете слишком старую версию WPML, это обходное решение может не сработать.
In these cases, you may get a white page, or this errors: PHP Fatal error:  Call to undefined function wpml_prepare_in()

Чтобы исправить эту конкретную ошибку, выполните следующие действия:


  1. откройте
    'wp-content/plugins/sitepress-multilingual-cms/inc/functions.php'
    и найдите
    wpml_prepare_in

  2. Если Вы не можете его найти, добавьте следующее в конец файла:
    function wpml_prepare_in( $items, $format = '%s' ) {
     global $wpdb;
    
     $items    = (array) $items;
     $how_many = count( $items );
     if ( $how_many > 0 ) {
      $placeholders    = array_fill( 0, $how_many, $format );
      $prepared_format = implode( ",", $placeholders );
      $prepared_in     = $wpdb->prepare( $prepared_format, $items );
     } else {
      $prepared_in = "";
     }
    
     return $prepared_in;
    }

Все известные проблемы →