- ステータス
- 解決済み
- 報告対象
- 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」->「パッケージ」に移動します。
- 「Create New」をクリックします。
- ウィザードを進め、すべての設定をデフォルトのままにします(必要に応じて、不要と思われるファイルや、「uploads」フォルダー内のファイルなど、パッケージが大きくなりすぎる原因となるファイルを除外できます)。
- スナップショットの準備ができたら、「installer」と「package」の両方のファイルをダウンロードします。
- フォルダーを作成し、手順3と6.4のファイル(デバッグ情報を含むテキストファイル、インストーラー、パッケージ)を含めます。
- そのフォルダーをZIP圧縮し、Google Drive、Dropbox、または同様のサービスにアップロードします(または、ZIP圧縮せずにフォルダー全体をアップロードして共有します)。
- サポートフォーラムに移動し、「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; }