- 状态
- 已解决
- 报告针对
- WPML Multilingual CMS 3.1.9.5
- 解决于
- 3.1.9.7
问题概述
- 前往菜单,使用默认语言创建一个菜单。
- 尝试使用次要语言创建该菜单。
- 保存后,您将遇到 404 错误。
临时解决方法
此问题已在 WPML 3.1.9.7 中解决
您应该更新到最近的 WPML 版本以修复此问题
如果您不想或无法更新 WPML,请按照以下说明操作:
- 下载更新版本的 iclNavMenu.class.php
- 使用它替换
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 121PHP 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- 白屏/空白页面
请采取以下步骤:
- 前往“WPML” -> “支持”
- 单击“调试信息”:您将看到一个灰色文本框,其中包含大量信息(这是一个 JSON 对象)
- 将文本框的内容复制到一个文本文件中,并随意命名该文件:最好使用“json”扩展名,但这并非强制要求
- 创建一个具有管理员权限的新 WordPress 用户,以便我调试该问题
- 安装免费的“Duplicator”插件(此处)。
如果您愿意,也可以使用其他插件,但以下说明是专门针对 Duplicator 的(尽管它们可以轻松调整以适用于其他插件) - 创建一个新包:
- 前往“Duplicator” -> “包”
- 单击“新建”
- 继续完成向导,保留所有默认设置(如果您愿意,可以排除一些您认为不需要的文件,或者会使包变得太大的文件,例如“uploads”文件夹中的文件)
- 快照准备就绪后,下载“installer”和“package”文件
- 创建一个文件夹,并将步骤 3 和 6.4 中的文件(即包含调试信息的文本文件、installer 和 package 文件)放入其中。
- 将该文件夹打包为 ZIP 文件,并将其上传到 Google Drive、Dropbox 或类似服务(或者不压缩直接上传整个文件夹,并共享它)
- 前往我们的支持论坛,并创建一个标题为“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()
要修复此特定错误,请按照以下步骤操作:
打开'wp-content/plugins/sitepress-multilingual-cms/inc/functions.php'
并搜索wpml_prepare_in
- 如果找不到,请在文件底部添加以下内容:
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; }