Resolved

Reported for: WPML Multilingual CMS 3.1.9.5

Resolved in: 3.1.9.7

Symptoms

  1. Go to the menu and create one in the default language.
  2. Try to create the menu in the second language.
  3. After saving you will get a 404 error.

Workaround

This problem has been solved in WPML 3.1.9.7

You should update to the recent WPML version to fix the problem

If you don’t want or can’t update WPML, please follow these directions:

  1. Download the updated version of iclNavMenu.class.php
  2. Use it as a replacement of sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php:
    Most likely this means you should use your FTP client and upload the file in sitepress-multilingual-cms/inc/wp-nav-menus: if you’re asked to overwrite the existing file, just do it.

In case of problems

In case you get any of these issues:

  • 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
  • A white/blank page

Take these steps:

  1. Go to “WPML” -> “Support”
  2. Click on “debug information“: you will see a gray text box, with a lot of information (it’s a json object)
  3. Copy the content of the textbox in a text file and name that file as you wish: better if you use the “json” extension, but this is not mandatory
  4. Create a new WordPress user with admin rights for me to debug the issue
  5. Install the free “Duplicator” plugin (here).
    You can use a different plugin, if you like, but the following directions are specific to Duplicator (though they can be easily adjusted for other plugins)
  6. Create a new package:
    1. Go to “Duplicator” -> “Packages”
    2. Click on “Create New”
    3. Proceed with the wizard, leaving all the default settings (if you wish, you can exclude some files you think are not needed, or that would make the package too big, like the files in “uploads” folder)
    4. Once the snapshot is ready, download both “installer” and the “package” files
  7. Create a folder and include the files at step 3 and 6.4 (that is, the text file with the debug information, the installer and the package).
  8. Zip that folder and upload it on Google Drive, Dropbox or a similar service (or upload the whole folder without zipping, and share it)
  9. Go to our support forum, and create a support ticket with the following title “Workaround issues – Saving menus in non default language leads to 404 error”: we will ask you to privately share the files you stored at step #8.

If you are using a too old version of WPML, this workaround may not work.

In these cases, you may get a white page, or this errors: PHP Fatal error:  Call to undefined function wpml_prepare_in()

To fix this specific error, please follow these steps:

  1. open

    'wp-content/plugins/sitepress-multilingual-cms/inc/functions.php'

    and search for 

    wpml_prepare_in
  2. If you can’t find it, add this at the bottom of the file:
    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;
    }

83 Responses to “Saving menus in non default language leads to 404 error”

  1. I have same problem on our domain http://www.fcararat.ee, but i can’t resolve, because i can’t update the plugin, it gives error: “Subscription is expired. You need to either purchase a new subscription or upgrade if available.”

    I can’t understand, why? We bough the WPML plugin, why it not allow to update?

    best regards,
    Avetis

    • Hi Avetis,
      it depends on what sort of subscription you bought. Only the Lifetime subscription doesn’t expire. Let us check it in our system and I will get back to you. Anyway you can check it yourself. Please log into you WPML account and see what purchase options you have available.

    • Sorry, but you subscription expired on May 7, 2014. You can renew it logging into your WPML account again.

  2. Extremely unhelpful article. As far as I can tell the proposed “fix” requires you to have a valid support license. Otherwise you can’t “Go to our support forum, and create a support ticket …”

    I purchased WPML over a year ago so my support license has expired. Now a WPML bug has “crashed” the site I’m maintaining and I have to pay to get it fixed? I’m not very happy at this moment.

    The latest version of WPML I’m allowed to download is 3.1.9.3 (this is also the version we have installed).

    It’s completely reasonable to only get access to new features as a subscriber to the paid maintenance package, but to only be allowed to use a seriously flawed and buggy version? That’s not reasonable at all. I would expect to at least get bug fixes to the version I have bought and paid for.

    • Hello Tomas,

      This is Sarah from the WPML development team. I am sure you are aware that plugin updates are not only for new features but often times for performance and security improvements and of course for bug fixes. WordPress itself releases bug fixes in version updates and so do many commercial WordPress plugins.

      • Sarah,

        I think you’ve missed my point entirely. My point is that normally when you purchase a piece of software, even when you don’t sign up for a paid maintenance subscription, you will at least get critical bug fixes for free. It’s just a good business standard practice that WPML doesn’t follow.

        The WPML policy of only releasing bugfixes to paying subscribers is downright greedy and bordering on fraudulent. The WPML team has no incentive to release bug-free updates, because with every update there will be customers whose subscription is expiring and these customers will then be forced to pay you again to get the next version that fixes those bugs. If they don’t, they might be stuck with a buggy version that is so bad it will break their site (as in my case). I’m just saying it’s a very customer-hostile policy and that you might reconsider this policy if you want happy customers.

        I ended up shelled out for the lifetime subscription plan to fix the bug and repair the site (again, thanks for nothing), but I’m afraid I will never be able to recommend WPML to anyone.

        I understand that I need to pay again to get new features. But I shouldn’t have to pay again to get bugs fixed that shouldn’t have been there in the first place.

  3. Migrated a website for client. Got a white screen of death. Updated all plugins, and theme. Got it working, but not the languages. Backend OK. But saving menu in other than default language brings the issue that was resolved here. ALso directory for language other than default gives blank screen.

    I posted topic on support forum. Please help.

  4. I totally agree with Thomas Eklund that a site-destroying bugg should be updated and repaired without having to buy a totally new subscription.
    It is bad practice and I will not be using WPML for my own or client sites in the future if this is the way you want to do business..

  5. How is this article helpful? There is a bug here, and you can only get a fix by coughing up 80 dollars (at least)?
    Buggy plugins should not hold customer’s sites hostage.
    This error effectively renders the plugin useless (if you can’t update or create menus in secondary languages, there is no point to using this plugin any more).
    This is not a good business practice and you should be ashamed of yourselves for not offering a free patch. I understand that you will not throw in staff hours into helping people install a patch, but since you clearly have a solution, the least you could do is release said patch and let people deal with applying it.