WPML and Cornerstone on a website using X Theme and Portfolio Items

I am experiencing a problem with WPML and Cornerstone on a website using X Theme and Portfolio Items. Website: https://agenziabelaval.it

My original Portfolio Items are created in Italian. I then create German and English translations using WPML. The translation process itself appears to work correctly: the translated content is visible in the WPML Translation Editor and the translation reaches 100% completion.

However, on the frontend, the translated Portfolio Items continue to display the original Italian content instead of the translated language.

What makes this issue particularly confusing is that the behavior is inconsistent.

Sometimes the translation appears correctly on the frontend. However, as soon as I edit any text within the Portfolio Item (even a very small change), save the page, and update the translation, the frontend suddenly reverts back to displaying the original Italian content.

What I have already checked:

• Portfolio post type (x-portfolio) is set to “Translatable” in WPML.

• WPML translations are completed and published.

• WPML and Cornerstone caches have been cleared.

• I reviewed the WPML custom field translation settings.

• I found the “_cornerstone_data” field and changed it from “Copy” to “Translate”.

• Some newly created Portfolio Items appeared to work temporarily after this change, but the issue returned and remains inconsistent.

• The translated content is visible inside WPML, but the frontend still loads the original language content.
• I also tested duplicating Portfolio Items and creating new translations, but the behavior remains inconsistent.
This makes me suspect that Cornerstone may still be loading the original builder data or that the Portfolio Item translation is not correctly connected to the Cornerstone data structure.

Hello @mediamacs,

Thanks for writing in! We would be happy to double check your site if we can log in. You can create a secure note in your next reply with the following info:
– Link to your site
– WP login URL
– WP username
– WP password
– WP Administrator Role
– Confirmation that we can access and make changes to your site

To know how to create a secure note, please check this out: How The Forum Works

image

Best Regards.

Hey @mediamacs,

Based on the behavior you described, the root cause of this inconsistency lies in how the _cornerstone_data custom field is configured in WPML’s translation settings, combined with the translation method you are using.

Here is the exact explanation of why this is happening and the steps you can take to resolve it.


Why the Translation Reverts to Italian

The _cornerstone_data custom field stores the entire serialized layout, elements, and text of your Cornerstone-built page.

  1. When set to “Copy”: Every time you make a change to the original Italian Portfolio Item and save it (or update its translation), WPML’s custom field synchronization takes the raw database value of _cornerstone_data from the Italian post and overwrites the German/English posts. This discards the translated builder data and reverts the frontend to Italian.
  2. When set to “Translate”: Because this field contains complex serialized data (not plain text), setting it to “Translate” forces WPML to try and process it in the Translation Editor. If the editor changes or saves it as a plain string, it corrupts the serialization format. When WordPress fails to unserialize the data, it either displays nothing or falls back to the original Italian content.

Possible Fixes

To solve this, choose the workflow that matches how you translate your pages:

Workflow A: If you translate using WPML’s Translation Editor (ATE / CTE)

Use this if you click the “+” or “pencil” icons in WPML and translate text in a split-screen editor.

  1. Ignore/Don’t Translate the Custom Field:
    • Go to WPML > Settings.
    • Scroll down to the Custom Fields Translation section. (If you don’t see it, click Show system fields to reveal hidden fields).
    • Find _cornerstone_data, _cornerstone_settings, and _cornerstone_version.
    • Set their translation preferences to Don’t translate (or Ignore).
      This stops WPML’s custom field copy routine from overwriting the translated builder data generated by the Page Builder integration.
  2. Refresh the Translation:
    • Go to the original Italian Portfolio Item.
    • Make a very minor edit (e.g., add a space at the end of a paragraph) and save the page.
    • Go to the WPML Translation Editor for the German and English translations, make sure they are 100% complete, and save.

Workflow B: If you translate manually in Cornerstone

Use this if you create translations as duplicates and open the Cornerstone builder directly on the German/English pages to translate the text.

  1. Turn off WPML’s Translation Editor:
    • Open the original Italian Portfolio Item.
    • In the right-hand sidebar under the Language section, turn OFF the toggle for Use WPML’s Translation Editor (either for this post specifically or globally).
  2. Change Custom Field settings to “Copy Once”:
    • Go to WPML > Settings > Custom Fields Translation.
    • Set _cornerstone_data to Copy once.
      This copies the layout to the translated page only when the translation is first created. Future updates to the Italian page will not overwrite your manual German/English layout edits.
  3. Ensure Independence:
    • When viewing the translated Portfolio Item in WordPress, ensure it is set to “Translate independently” so the two pages do not sync and overwrite each other.

If none of the solution work, please copy your site to a staging server so we can test without breaking your content. Please provide your staging URL after creating it.

Thanks.

I’m sorry, couldn’t solve the problem.
moved everything on an test server. You’ll find the URL in the secure note.
Thanks a lot
Wolfgang

Hey @mediamacs,

We’ll investigate further. Please stay tuned.

Hi Christian
could you please tell me I you had any solution for the problem.
thanks
wolffgang

Hey Wolfgang,

The URLs of the Italian page and the German page are different. The Italian page uses plain URL while the German page uses pretty permalink. Please make them the same first before we continue investigating. Please see the secure notes

Thanks.

Hey Wolfgang,

I have edited the German page version.

What I did were

  1. Migrated to HTML
  2. Visited the German URL and edited the page in Cornerstone.

Please try testing the test page and if you encounter the issue again, let us know how exactly you’re editing the translation.

Thanks.

Thank you verrrrrry much for your help
Wolfgang

You’re welcome, Wolfgang