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. 创建一个文件夹,并将步骤 36.4 中的文件(即包含调试信息的文本文件、installer 和 package 文件)放入其中。

  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;
    }

所有已知问题 →