{"id":13686251,"date":"2023-05-25T12:05:59","date_gmt":"2023-05-25T12:05:59","guid":{"rendered":"https:\/\/wpml.org\/?p=13686251"},"modified":"2023-05-25T12:06:38","modified_gmt":"2023-05-25T12:06:38","slug":"wpml-graphql-build-headless-multilingual-wordpress-sites","status":"publish","type":"post","link":"https:\/\/wpml.org\/he\/compatibility\/2023\/05\/wpml-graphql-build-headless-multilingual-wordpress-sites\/","title":{"rendered":"Introducing WPML GraphQL &#8211; Build Headless, Multilingual WordPress Sites"},"content":{"rendered":"\n<p class=\"lead\">We're excited to announce the release of WPML GraphQL, a new glue plugin that bridges WPML and WPGraphQL, enabling multilingual support within the GraphQL schema.<\/p>\n\n\n\n<p>Designed for developers using Gatsby, React, Vue, and other popular front-end technologies, WPML GraphQL is the optimal solution for creating headless WordPress websites in multiple languages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Headless WordPress?<\/h2>\n\n\n\n<p>In simple terms, &quot;headless WordPress\u201d, refers to a setup where WordPress works behind the scenes while you employ a separate technology for the front-end.&nbsp;<\/p>\n\n\n\n<p>Sometimes, you need to build a completely custom front-end application without the need to follow the WordPress template and URL hierarchy. In other words, you don't want to be restricted by how WordPress themes work, you want to build your own front-end.<\/p>\n\n\n\n<p>However, you can still use WordPress for all your content creation and editing needs.<\/p>\n\n\n\n<p>Now, all you need is a way to easily deliver data from the WordPress backend to whatever front-end technology you're using. This is where WPGraphQL comes in. It allows you to selectively retrieve the exact content element you need for each part of your front-end.<\/p>\n\n\n\n<p>Finally, WPML GraphQL is the magic ingredient that lets you get language data and translations from the WPML plugin. This enables you to build a customized, headless WordPress site that is multilingual.<\/p>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"b9e07c3f69bfec554796fce1ee79615f\"><div class=\"tb-container-inner\">\n<h3 class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"f9f3c4d8cd6e2bc298ad7b9604e3f8fe\" data-last-update=\"1.4\">Recommended Development Stack for Building Headless WordPress Sites<\/h3>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"5babdacffdb9614a10098ac35a9a81fd\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"6e7c35427b4b0c1334996b4310a3bc62\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"b49d27f53360fafcf2da93c52cb74e5e\">\n<h4 class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"0bd3ae3d32c5fc413a26e67a89c6256e\" data-last-update=\"1.4\">Front-end<\/h4>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"7ac010f7d2f085b74047ba467102e072\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"84808fce255f79cb1076ea1712460052\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"ca211ba6bae5d926213c60a27886b0b2\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">Gatsby<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\">Front-end framework for building the user-facing application or site<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"7ac010f7d2f085b74047ba467102e072\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"32a3edc84f541219ea082957439a8c06\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"ca211ba6bae5d926213c60a27886b0b2\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">Gatsby Add-on for WordPress<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\"><strong>gatsby-source-wordpress<\/strong> add-on allows Gatsby to get data from your WordPress backend<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"a5fb85e997b4d1f4667da0b5ff00d3e5\">\n<h4 class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"26b491297d7127906436cefff6458433\" data-last-update=\"1.4\">Back-end<\/h4>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"95643be9713514de91a5e9344e05cd7b\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"84808fce255f79cb1076ea1712460052\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"3a9f123baa561d2f218d05b5fce190e9\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">WordPress<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\">For all your content management needs, you only use the backend<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"95643be9713514de91a5e9344e05cd7b\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"84808fce255f79cb1076ea1712460052\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"39c5b5f52d7b601c01c487a257335b78\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">WPGraphQL plugin for WordPress<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\">Adds GraphQL support to WordPress<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"95643be9713514de91a5e9344e05cd7b\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"84808fce255f79cb1076ea1712460052\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"f8551cca3fb6beeedf26cc073c92a721\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">WPML GraphQL plugin for WordPress<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\">Enables multilingual features within the GraphQL schema<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"95643be9713514de91a5e9344e05cd7b\">\n<div class=\"wp-block-toolset-blocks-grid tb-grid\" data-toolset-blocks-grid=\"32a3edc84f541219ea082957439a8c06\">\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<div class=\"wp-block-toolset-blocks-container tb-container\" data-toolset-blocks-container=\"aa0176a7e26ba982272300a56009cbc4\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-toolset-blocks-grid-column tb-grid-column tb-grid-align-top\" data-toolset-blocks-grid-column=\"3034fbe886c11054e95b46b09d3e4112\">\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"b7d2c36666500cd636c2b4f3f4004f80\" data-last-update=\"1.4\">WPGatsby plugin for WordPress<\/p>\n\n\n\n<p class=\"tb-heading has-text-color\" data-toolset-blocks-heading=\"6b02de44a943e94854dc79db5a6b6074\" data-last-update=\"1.4\">Optional, but depending on your needs might come in handy<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"tb-heading\" data-toolset-blocks-heading=\"b48c04d6a4b65aa7b209cd7bba400d68\" data-last-update=\"1.4\">Enhanced Capabilities with WPML GraphQL<\/h2>\n\n\n\n<p>WPML GraphQL integrates with WPGraphQL and adds new fields and filters to the GraphQL schema. After installing the plugin, you can navigate to <strong>GraphQL \u2192 GraphQL IDE<\/strong> and use the <strong>Query Composer<\/strong> to query and filter content in multiple languages.<\/p>\n\n\n\n<p>In the screenshot below, you can see how easy it is to use the <strong>language<\/strong> field to retrieve a list of all posts on a WordPress site, including their language code, slug, and URI. You can also use the <strong>translations<\/strong> field to get similar information for the translations of each post:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\" tb-image tb-image-dynamic tb-image-frame-none aligncenter\" data-toolset-blocks-image=\"67e9671e0c8043dfc3f57ac943184c34\"><a href=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1.png\"><img decoding=\"async\" width=\"2472\" height=\"1214\" loading=\"lazy\" src=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1.png\" alt=\"\" class=\"wp-image-13686265\" srcset=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1.png 2472w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-300x147.png 300w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-1024x503.png 1024w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-150x74.png 150w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-768x377.png 768w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-1536x754.png 1536w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/wpml-graphql-query-composer-1-2048x1006.png 2048w\" sizes=\"auto, (max-width: 2472px) 100vw, 2472px\" \/><\/a><figcaption><div class=\"tb-image-caption\"><em>Using the language and translations fields in the Query Composer to retrieve posts in multiple languages<\/em><\/div><\/figcaption><\/figure>\n<\/div>\n\n\n<p>This integration between WPML GraphQL and WPGraphQL opens a world of multilingual possibilities:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build headless multilingual WordPress sites<\/li>\n\n\n\n<li>Use new fields (language, language code, translations) to retrieve specific language data and translations from the WPML plugin<\/li>\n\n\n\n<li>Filter post types, taxonomies, and comments by language<\/li>\n\n\n\n<li>Get language data for objects and nodes<\/li>\n\n\n\n<li>Query data based on all installed languages or specific languages<\/li>\n<\/ul>\n\n\n\n<p>As a bonus, WPML GraphQL plays well with ACF, <a href=\"https:\/\/wpml.org\/documentation\/related-projects\/translate-sites-built-with-acf\/\">ACF Multilingual<\/a>, and WPGraphQL for Advanced Custom Fields. This allows you to easily interact with multilingual data coming from ACF fields.<\/p>\n\n\n\n<p>For more about how multilingual functionality can elevate WPGraphQL, check out <a href=\"https:\/\/wpml.org\/documentation\/related-projects\/wpml-graphql\/\">the page dedicated to WPML GraphQL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download and Install<\/h2>\n\n\n\n<p>You can find the WPML GraphQL plugin on the <a href=\"https:\/\/wpml.org\/account\/downloads\/\">WPML Downloads page<\/a>.&nbsp;<\/p>\n\n\n\n<p>Or from your site\u2019s admin, you can go to <strong>Plugins \u2192 Add new<\/strong> and click over to the <strong>Commercial<\/strong> tab.<\/p>\n\n\n\n<figure class=\"wp-block-image tb-image tb-image-dynamic tb-image-frame-none\" data-toolset-blocks-image=\"0df615ad2d7677c52b5688a53ff24d13\"><a href=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql.png\"><img decoding=\"async\" width=\"1984\" height=\"1480\" loading=\"lazy\" src=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql.png\" alt=\"\" class=\"wp-image-13715941\" srcset=\"https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql.png 1984w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql-300x224.png 300w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql-1024x764.png 1024w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql-150x112.png 150w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql-768x573.png 768w, https:\/\/wpml.org\/wp-content\/uploads\/2023\/05\/download-wpml-graphql-1536x1146.png 1536w\" sizes=\"auto, (max-width: 1984px) 100vw, 1984px\" \/><\/a><figcaption><div class=\"tb-image-caption\"><em>Downloading WPML GraphQL from the Commercial tab on the Plugins page<\/em><\/div><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Share Your Thoughts<\/h2>\n\n\n\n<p>Are you currently using WPGraphQL for your web development? Do you plan to create a headless WordPress site with multilingual functionality? We'd love to hear your thoughts!&nbsp;<\/p>\n\n\n\n<p>Share your feedback and tell us how you plan to use the WPML GraphQL plugin in the comments below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We're excited to announce the release of WPML GraphQL, a new glue plugin that bridges WPML and WPGraphQL, enabling multilingual support within the GraphQL schema. Designed for developers using Gatsby, React, Vue, and other popular front-end technologies, WPML GraphQL is the optimal solution for creating headless WordPress websites in multiple languages. What is Headless WordPress? [&hellip;]<\/p>\n","protected":false},"author":538393,"featured_media":13686297,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"ep_exclude_from_search":false,"footnotes":""},"categories":[1371],"tags":[],"class_list":["post-13686251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-compatibility"],"_links":{"self":[{"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/posts\/13686251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/users\/538393"}],"replies":[{"embeddable":true,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/comments?post=13686251"}],"version-history":[{"count":8,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/posts\/13686251\/revisions"}],"predecessor-version":[{"id":13715953,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/posts\/13686251\/revisions\/13715953"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/media\/13686297"}],"wp:attachment":[{"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/media?parent=13686251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/categories?post=13686251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wpml.org\/he\/wp-json\/wp\/v2\/tags?post=13686251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}