Content platforms

Connect WordPress

Pair a WordPress site with a transglot project, import posts, pages and terms, and publish reviewed translations back to the site.

DirectionTwo-way
ImportedTitle, excerpt and content of posts and pages; name and description of categories and tags
Written backOne translation bundle per post, page or term, stored in post or term meta. The original fields are never written
SyncThe transglot plugin notifies transglot when content changes, or Sync from CMS
PlanStarter and above

Two ways to connect

  • With the transglot plugin for WordPress (recommended). You paste one pairing code into the plugin. The plugin creates its own credential, registers the meta key translations are written to, renders the translations on per-language URLs, and tells transglot when content changes.
  • With an application password only. You enter the site URL and an application password on the CMS page. This imports and publishes over the WordPress REST API, but nothing on the site registers the meta key or renders the translations unless you build that yourself.

Connect with the plugin

The plugin requires WordPress 6.6 or later and PHP 7.4 or later. It cannot run alongside another multilingual plugin (WPML, Polylang or TranslatePress), and on multisite it is activated per site.

Install the plugin

In wp-admin, install and activate the transglot plugin (it appears in wp-admin as Transglot).

Generate a pairing code

In transglot, open your project's settings, choose CMS, and pick WordPress in the CMS list. In The Transglot plugin for WordPress panel, select Generate pairing code.

The code is shown once. It pairs one site and stops working after 15 minutes. Generate another code replaces it; Revoke outstanding code cancels a code nobody has used yet.

Paste the code in WordPress

In wp-admin, open Transglot, then Setup. Paste the code into Your code and select Connect this site. WordPress asks you to approve the application password the plugin creates for the connection.

Finish the setup wizard

The wizard continues with your languages, the URL format for each language and the language switcher. Its last screen checks the round trip: it writes a test bundle through the same REST route transglot uses and reads it back.

A new pairing publishes to every target language of the project that your access covers; you can change the list under Publish these locales afterwards.

Pairing writes your project's source language, so the person generating the code needs access to the source language. Otherwise the panel says the code must be generated by an admin whose access covers it.

Connect with an application password

FieldWhat to enter
WordPress site URLThe site root, for example https://blog.example.com. transglot adds /wp-json/… itself. It must use https and be publicly reachable
Application passwordusername:application-password, created under your WordPress user profile's application passwords
Content typesAny of posts, pages, categories, tags
Translatable fieldsAny of title, excerpt, content (posts and pages) and name, description (categories and tags)
Publish these localesThe target languages to write back

Select Connect, then Test connection. A successful test names the site.

Register the meta key yourself

Without the plugin, your site must register the transglot_translations meta key for the REST API on every post type and taxonomy you publish to. WordPress drops a meta write for a key nothing has registered and still answers success, so the publish reports entries that the site never stored.

What gets imported

transglot reads the raw (unrendered) value of each mapped field over the WordPress REST API. Empty fields are skipped.

The REST API only exposes those fields. With the plugin, theme and plugin interface strings, menu labels, widget text, media alt text and SEO titles and descriptions reach your project through the plugin's own push instead.

How translations are written back

Each publish writes one bundle per entry into the transglot_translations meta key: every reviewed target language, and in it every mapped field. Only that meta key is written, so the post's or term's own title and content are never changed.

With the plugin, the bundle is rendered on per-language URLs with hreflang and per-language sitemaps. Without it, your theme or headless front end reads the bundle from post meta.

After a publish, the panel shows a receipt such as Last publish: 12 entries, 30 values, with the number that could not be written. The plugin compares it against what the site actually stored, and its Health screen reports any difference.

Sync on content change

With the plugin, saving, unpublishing, trashing or deleting a post, page or term sends a signed, batched notification. transglot then reads only the changed entries back. Nothing else is needed.

If the site's notifications start failing after you select Rotate signing secret, pair the site again so the plugin receives the new secret. The old secret stops working straight away.

Troubleshooting

  • That URL does not expose the WordPress REST API (wp/v2 namespace missing). The REST API is disabled or blocked at that address. Check the URL and any security plugin.
  • The posts listing reported ... entries but no usable X-WP-TotalPages header. A cache or security plugin is stripping the X-WP-* response headers. Syncing would import only the first page, so transglot stops instead. Let those headers through for /wp-json/ requests.
  • ... the credentials were rejected. The application password is wrong or revoked, or the user cannot edit the content.
  • The publish receipt says some entries could not be written, and that some of those are entries this CMS cannot accept: those are skipped on purpose and are not a fault.
  • A pairing code is refused in the plugin: it has expired, been used, or been revoked. Generate a new one.
  • This project is already connected to ... The project already has a connection to another platform. Each project holds one connection, so disconnect the other platform before pairing.

On this page