LocalizationPro
GoBuildWP WPML integration: requirements and coverage
A reference for the WPML MCP abilities in GoBuildWP Pro: what each call reads or changes in WPML's tables, the inputs that trip agents up (two spellings of element type, the keep_group switch), and how String Translation writes differ from registering a string. It is written for someone who already knows WPML and wants to know exactly what a call will do before letting an AI client make it.
Our footer notice is a theme option and never shows in German. Fix that.
wppilot/wpml-list-stringsReadSearches String Translation for the notice and finds no row, so WPML has never seen it.
wppilot/wpml-register-stringWriteRegisters it under the theme's domain with a name and the English source value.
wppilot/wpml-set-string-translationWriteWrites the German text for language de with status complete.
wppilot/wpml-get-string-translationsReadReads the string back in every configured language to confirm German is stored.
- Edition
- Pro
- Abilities
- 13
- Requires
- WordPress 6.9+, PHP 8.0+, WPML 4.7.0+
Requirements and coverage
What this integration needs, and where the detail lives
- Edition
- Pro
- WordPress and PHP
- 6.9+ and 8.0+
- Version floor
- WPML 4.7.0+
- Abilities
- 13, listed in the reference
WPML MCP guide: setup and worked tasks WPML ability reference (wpml)
Data model
WPML's two sets of tables
Content language lives in icl_translations: one row per element with its type, language, translation-group id (trid) and the language it was translated from. The group writes here change those rows through WPML's own functions, which is also why the change log cannot restore them.
Strings live in a separate pair of tables, icl_strings and icl_string_translations, maintained by the String Translation add-on. Each string has a domain (called context in WPML's screens), a name, a source value and language, and a status per translation. Strings that belong to a builder or form package are part of that package's translation job instead.
Worked example
Making a theme option translatable
Expected outcome to verify on the installed stack; this sequence has not been recorded as a runtime test.
WPML now holds a German translation, and it shows on the site once the theme prints the option through the wpml_translate_single_string filter with the same domain and name. If the theme reads the raw option instead, the translation stays in the table unused.
Check String Translation and the theme’s translation filter before the example. Registering strings alone is incomplete until the theme reads the registered translation on the rendered page.
wpml-list-stringsSearches String Translation for the notice and finds no row, so WPML has never seen it.
wpml-register-stringRegisters it under the theme's domain with a name and the English source value.
wpml-set-string-translationWrites the German text for language de with status complete.
wpml-get-string-translationsReads the string back in every configured language to confirm German is stored.
Limits
Outside what the WPML abilities do
- Test synthetic translated URLs after the exact write and publication. Check rendered text, response status, hreflang and canonical independently; saved strings or grouping do not prove translation quality or search eligibility. Recovery is specific to the changed WPML storage.
- No Translation Management: jobs are not listed and content is not sent to translators.
- Language and group writes cover post types only; there is no term language write.
- WPML's configuration (adding languages, making a type translatable, translation mode) is reported, never changed.
- None of the writes can be rolled back from the change log; group writes change icl_translations and string writes the String Translation tables.
Other plugins
WooCommerce Multilingual and other language plugins
- Products translate through the same content abilities as any other post type; WooCommerce Multilingual's price, attribute and variation handling is not wrapped.
- Polylang and Weglot have their own modules; identifiers from one are never passed to another.
Questions
WPML questions
Why does wpml-get-translation return an error for post_page?
It expects the bare type, page. The post_-prefixed form is WPML's internal spelling, and the ability refuses it rather than returning an empty lookup.
What does keep_group do on wpml-set-content-language?
True keeps the post in its translation group and only changes its language; false moves it into a new group of its own, which is how a wrongly linked post is pulled out.
Why is a page builder string refused?
It belongs to a package, and WPML delivers package translations through its Translation Editor. Translate it there.
I registered a string and translated it, but the site still shows English. Why?
The code that prints it has to ask WPML for the translation through wpml_translate_single_string with the same domain and name. Registration only makes it translatable.
Where these facts come from
GoBuildWP behaviour is taken from the plugin source and the ability reference; third-party details from the vendor documentation below, checked by the GoBuildWP team.
WPML is a separate product; no partnership or endorsement is implied.