{"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\/vi\/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&#8217;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, &#8220;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&#8217;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&#8217;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-13686255\" 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-13715931\" 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&#8217;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&#8217;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\/vi\/wp-json\/wp\/v2\/posts\/13686251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/users\/538393"}],"replies":[{"embeddable":true,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/comments?post=13686251"}],"version-history":[{"count":8,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/posts\/13686251\/revisions"}],"predecessor-version":[{"id":13715953,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/posts\/13686251\/revisions\/13715953"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/media\/13686297"}],"wp:attachment":[{"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/media?parent=13686251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/categories?post=13686251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wpml.org\/vi\/wp-json\/wp\/v2\/tags?post=13686251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}