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. 「Create New」をクリックします。

    3. ウィザードを進め、すべての設定をデフォルトのままにします(必要に応じて、不要と思われるファイルや、「uploads」フォルダー内のファイルなど、パッケージが大きくなりすぎる原因となるファイルを除外できます)。

    4. スナップショットの準備ができたら、「installer」と「package」の両方のファイルをダウンロードします。

  7. フォルダーを作成し、手順36.4のファイル(デバッグ情報を含むテキストファイル、インストーラー、パッケージ)を含めます。

  8. そのフォルダーをZIP圧縮し、Google Drive、Dropbox、または同様のサービスにアップロードします(または、ZIP圧縮せずにフォルダー全体をアップロードして共有します)。

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

すべての既知の問題 →