{"id":3318,"date":"2025-02-14T10:53:00","date_gmt":"2025-02-14T10:53:00","guid":{"rendered":"https:\/\/s-o-s.net\/wpgraphql\/"},"modified":"2025-02-14T10:53:00","modified_gmt":"2025-02-14T10:53:00","slug":"wpgraphql","status":"publish","type":"post","link":"https:\/\/s-o-s.net\/en_gb\/wpgraphql\/","title":{"rendered":"WPGraphQL"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<article id=\"post-124250\" class=\"alignwide post-124250 plugin type-plugin status-publish hentry plugin_tags-decoupled plugin_tags-graphql plugin_tags-headless plugin_tags-react plugin_tags-rest-api plugin_contributors-chopinbach plugin_contributors-jasonbahl plugin_contributors-justlevine plugin_contributors-kidunot89 plugin_contributors-ryankanner plugin_contributors-tylerbarnes1 plugin_business_model-community plugin_committers-jasonbahl plugin_support_reps-jasonbahl plugin_support_reps-joefusco plugin_support_reps-justlevine plugin_support_reps-kidunot89 plugin_support_reps-tylerbarnes1\">\n<div class=\"plugin-banner\" id=\"plugin-banner-wp-graphql\"><\/div>\n<header class=\"plugin-header\">\n<div class=\"entry-heading-container\">\n<div>\n<div class=\"entry-thumbnail\">\n\t\t\t\t\t<img decoding=\"async\" class=\"plugin-icon\" srcset=\"https:\/\/ps.w.org\/wp-graphql\/assets\/icon-128x128.png?rev=3111985, https:\/\/ps.w.org\/wp-graphql\/assets\/icon-256x256.png?rev=3111985 2x\" src=\"https:\/\/ps.w.org\/wp-graphql\/assets\/icon-256x256.png?rev=3111985\" alt=\"\">\t\t\t\t<\/div>\n<div>\n<h1 class=\"plugin-title\">WPGraphQL<\/h1>\n<p>\t\t\t\t\t<span class=\"byline\">By <span class=\"author vcard\"><a target=\"_blank\" class=\"url fn n\" href=\"https:\/\/profiles.wordpress.org\/jasonbahl\/\" rel=\"noopener\">Jason Bahl<\/a><\/span><\/span>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"plugin-actions\">\n<div class=\"wp-block-button is-small plugin-download download-button\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.wordpress.org\/plugin\/wp-graphql.2.0.0.zip\" rel=\"noopener\">Download<\/a><\/div>\n<div class=\"wp-block-button is-small is-style-outline plugin-preview download-button is-style-outline--9\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/wordpress.org\/plugins\/wp-graphql\/?preview=1\" rel=\"noopener\">Live Preview<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/header>\n<p><!-- .entry-header --><\/p>\n<p>\t<span id=\"description\"><\/span><br \/>\n\t<span id=\"reviews\"><\/span><br \/>\n\t<span id=\"installation\"><\/span><br \/>\n\t<span id=\"developers\"><\/span><br \/>\n\t<span id=\"advanced\" class=\"\"><\/span><br \/>\n\t<span id=\"section-links\"><\/p>\n<ul class=\"tabs clear\">\n<li id=\"tablink-description\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-graphql\/#description\" rel=\"noopener\">Details<\/a><\/li>\n<li id=\"tablink-reviews\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-graphql\/#reviews\" rel=\"noopener\">Reviews<\/a><\/li>\n<li id=\"tablink-developers\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/wp-graphql\/#developers\" rel=\"noopener\">Development<\/a><\/li>\n<\/ul>\n<div id=\"link-support\">\n\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/wp-graphql\/\" rel=\"noopener\">Support<\/a>\n\t\t<\/div>\n<p>\t<\/span><br \/>\n\t<script type=\"text\/javascript\">if ( '#changelog' == window.location.hash ) { window.setTimeout( function() { window.location.hash=\"#developers\"; }, 10 ); }<\/script><\/p>\n<div class=\"entry-content\">\n<div id=\"tab-description\" class=\"plugin-description section\">\n<h2 id=\"description-header\">Description<\/h2>\n<p>WPGraphQL is a free, open-source WordPress plugin that provides an extendable GraphQL schema and API for any WordPress site.<\/p>\n<p><strong>Get Started<\/strong><\/p>\n<ol>\n<li>Install WPGraphQL: <code>wp plugin install wp-graphql --activate<\/code><\/li>\n<li>Try it out: <a target=\"_blank\" href=\"https:\/\/repl.wpgraphql.com\" rel=\"nofollow ugc noopener\">Live Demo<\/a><\/li>\n<li>Read the <a target=\"_blank\" href=\"https:\/\/wpgraphql.com\/docs\/quick-start\" rel=\"nofollow ugc noopener\">Quick Start Guide<\/a>.<\/li>\n<li>Join the <a target=\"_blank\" href=\"https:\/\/discord.gg\/AGVBqqyaUY\" rel=\"nofollow ugc noopener\">Community on Discord<\/a> and <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\" rel=\"nofollow ugc noopener\">Star the Repo<\/a>!<\/li>\n<\/ol>\n<p><strong>Key Features<\/strong><\/p>\n<ul>\n<li><strong>Flexible API<\/strong>: Query posts, pages, custom post types, taxonomies, users, and more.<\/li>\n<li><strong>Extendable Schema<\/strong>: Easily add functionality with WPGraphQL\u2019s API, enabling custom integrations.<\/li>\n<li><strong>Compatible with Modern Frameworks<\/strong>: Works seamlessly with <a target=\"_blank\" href=\"https:\/\/vercel.com\/guides\/wordpress-with-vercel\" rel=\"nofollow ugc noopener\">Next.js<\/a>, <a target=\"_blank\" href=\"https:\/\/docs.astro.build\/en\/guides\/cms\/wordpress\/\" rel=\"nofollow ugc noopener\">Astro<\/a>, <a target=\"_blank\" href=\"https:\/\/www.okupter.com\/blog\/headless-wordpress-graphql-sveltekit\" rel=\"nofollow ugc noopener\">SvelteKit<\/a>, and more.<\/li>\n<li><strong>Optimized Performance<\/strong>: Fetch exactly the data you need in a single query. Boost performance with <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql-smart-cache\" rel=\"nofollow ugc noopener\">WPGraphQL Smart Cache<\/a>.<\/li>\n<\/ul>\n<p>WPGraphQL is becoming a <a target=\"_blank\" href=\"https:\/\/wordpress.org\/news\/2024\/10\/wpgraphql\/\" rel=\"ugc noopener\">Canonical Plugin<\/a> on WordPress.org, ensuring long-term support and a growing community of users and contributors.<\/p>\n<h4>Upgrading<\/h4>\n<p>It is recommended that anytime you want to update WPGraphQL that you get familiar with what\u2019s changed in the release.<\/p>\n<p>WPGraphQL publishes <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/releases\" rel=\"nofollow ugc noopener\">release notes on Github<\/a>.<\/p>\n<p>WPGraphQL has been following Semver practices for a few years. We will continue to follow Semver and let version numbers communicate meaning. The summary of Semver versioning is as follows:<\/p>\n<ul>\n<li><em>MAJOR<\/em> version when you make incompatible API changes,<\/li>\n<li><em>MINOR<\/em> version when you add functionality in a backwards compatible manner, and<\/li>\n<li><em>PATCH<\/em> version when you make backwards compatible bug fixes.<\/li>\n<\/ul>\n<p>You can read more about the details of Semver at semver.org<\/p>\n<h3>Privacy Policy<\/h3>\n<p>WPGraphQL uses <a target=\"_blank\" href=\"https:\/\/appsero.com\" rel=\"nofollow ugc noopener\">Appsero<\/a> SDK to collect some telemetry data upon user\u2019s confirmation. This helps us to troubleshoot problems faster and make product improvements.<\/p>\n<p>Appsero SDK <strong>does not gather any data by default.<\/strong> The SDK starts gathering basic telemetry data <strong>only when a user allows it via the admin notice<\/strong>.<\/p>\n<p>Learn more about how <a target=\"_blank\" href=\"https:\/\/appsero.com\/privacy-policy\/\" rel=\"nofollow ugc noopener\">Appsero collects and uses this data<\/a>.<\/p>\n<p>Learn more about how <a target=\"_blank\" href=\"https:\/\/appsero.com\/privacy-policy\/\" rel=\"nofollow ugc noopener\">Appsero collects and uses this data<\/a>.<\/p>\n<\/div>\n<div id=\"screenshots\" class=\"plugin-screenshots section\">\n<h2 id=\"screenshots-header\">Screenshots<\/h2>\n<ul class=\"plugin-screenshots\">\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/wp-graphql\/assets\/screenshot-1.jpg?rev=2482884\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/wp-graphql\/assets\/screenshot-1.jpg?rev=2482884\" alt=\"\"><\/a><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/wp-graphql\/assets\/screenshot-2.jpg?rev=2482884\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/wp-graphql\/assets\/screenshot-2.jpg?rev=2482884\" alt=\"\"><\/a><\/figure>\n<\/li>\n<\/ul>\n<\/div>\n<div id=\"faq\" class=\"plugin-faq section\">\n<h2 id=\"faq-header\">FAQ<\/h2>\n<dl>\n<dt id=\"how%20is%20wpgraphql%20funded%3F\">\n<h3>How is WPGraphQL funded?<\/h3>\n<\/dt>\n<dd>\n<p>WPGraphQL is free and open-source. It is supported by contributors, backers, and sponsors, including Automattic, which provides significant support as WPGraphQL becomes a Canonical Plugin.<\/p>\n<p>Learn more about supporting WPGraphQL on <a target=\"_blank\" href=\"https:\/\/opencollective.com\/wp-graphql\" rel=\"nofollow ugc noopener\">Open Collective<\/a>.<\/p>\n<\/dd>\n<dt id=\"can%20i%20use%20wpgraphql%20with%20xx%20javascript%20framework%3F\">\n<h3>Can I use WPGraphQL with xx JavaScript framework?<\/h3>\n<\/dt>\n<dd>\n<p>Yes! WPGraphQL works with any client that can make HTTP requests to the GraphQL endpoint. It integrates seamlessly with frameworks like <a target=\"_blank\" href=\"https:\/\/vercel.com\/guides\/wordpress-with-vercel\" rel=\"nofollow ugc noopener\">Next.js<\/a>, <a target=\"_blank\" href=\"https:\/\/gatsbyjs.com\" rel=\"nofollow ugc noopener\">Gatsby<\/a>, <a target=\"_blank\" href=\"https:\/\/docs.astro.build\/en\/guides\/cms\/wordpress\/\" rel=\"nofollow ugc noopener\">Astro<\/a>, and more.<\/p>\n<\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\">\n<h3>Where can I get support?<\/h3>\n<\/dt>\n<dd>\n<p>You can join the WPGraphQL <a target=\"_blank\" href=\"https:\/\/discord.gg\/AGVBqqyaUY\" rel=\"nofollow ugc noopener\">Discord community<\/a> for support, discussions, and announcements.<\/p>\n<\/dd>\n<dt id=\"how%20does%20wpgraphql%20handle%20privacy%20and%20telemetry%3F\">\n<h3>How does WPGraphQL handle privacy and telemetry?<\/h3>\n<\/dt>\n<dd>\n<p>WPGraphQL uses the <a target=\"_blank\" href=\"https:\/\/appsero.com\/privacy-policy\" rel=\"nofollow ugc noopener\">Appsero SDK<\/a> to collect telemetry data <strong>only after user consent<\/strong>. This helps improve the plugin while respecting user privacy.<\/p>\n<\/dd>\n<\/dl>\n<\/div>\n<div id=\"tab-reviews\" class=\"plugin-reviews section\">\n<h2 id=\"reviews-header\">Reviews<\/h2>\n<div class=\"plugin-reviews\">\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/3168ee6eae340ca4a96c94efe8c2ed788e4787c98daec5f442c07aadfbf7d899?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/3168ee6eae340ca4a96c94efe8c2ed788e4787c98daec5f442c07aadfbf7d899?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/performance-performance-performance\/\" rel=\"noopener\">Performance performance performance<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/psychosispicks\/\" title=\"Posts by psychosispicks\" rel=\"author noopener\">psychosispicks<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">September 7, 2023<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">I\u2019m so glad I decided to transition to a headless WP, and WPGraphQL made this possible, convenient and super fast.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/acd1324f0b40dba22d7f0e6dcd13a7cba56e9c6aacd66f73e829d3acb4c28c26?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/acd1324f0b40dba22d7f0e6dcd13a7cba56e9c6aacd66f73e829d3acb4c28c26?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"3 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"3\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-empty\"><\/span><span class=\"dashicons dashicons-star-empty\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/unreliable-44\/\" rel=\"noopener\">Unreliable<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/benknight\/\" title=\"Posts by benknight\" rel=\"author noopener\">benknight<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">May 29, 2023<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"review-replies\">1 reply<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">I operate a large blog that uses WordPress as a headless CMS with a Next.JS frontend, which is largely enabled by this plugin. Let me just say first that creating an entire alternative third-party data API is an ambitious undertaking and I appreciate all the work the authors have put into it.<\/p>\n<p>But as a developer I have to throw out a word of caution that this plugin often has major bugs that can have critical impact on your production website. For example after a recent minor update  we discovered a bug where any URL with a special character in it started returning a 404, causing several of our pages to suddenly become unavailable to users and delisted from Google, and this went on for many months before we realized it.<\/p>\n<p>There have been many similar instances. My general approach is to lean more on WordPress\u2019s REST API over time which is more reliable since it\u2019s maintained by the WordPress team, and only use WPGraphQL when it\u2019s necessary.<\/p>\n<p>Also recommend turning off auto-updates and test your website extremely thoroughly after any upgrade.<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/48a7f4f320763869961fad5d20a07b8996259921c3bb7fab4b5a2d4f6914e844?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/48a7f4f320763869961fad5d20a07b8996259921c3bb7fab4b5a2d4f6914e844?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-10-stars-if-possible-2\/\" rel=\"noopener\">Great! 10 stars if possible<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/chisnghiax\/\" title=\"Posts by chisnghiax\" rel=\"author noopener\">chisnghiax<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">September 7, 2022<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great!<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/76f1cb13f179e916222228b5452c294ab3d54740a875244305a8b09f3bcf6ea1?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/76f1cb13f179e916222228b5452c294ab3d54740a875244305a8b09f3bcf6ea1?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-plugin-34916\/\" rel=\"noopener\">Great Plugin!<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/2cubed\/\" title=\"Posts by 2cubed\" rel=\"author noopener\">2cubed<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">August 26, 2022<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">One of the best plugins for WordPress. It\u2019s right up there with ACF!<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/31a05155e279bd0f2b1f59c0768c20d89ff45c8461975a6a4f525377a912c3d2?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/31a05155e279bd0f2b1f59c0768c20d89ff45c8461975a6a4f525377a912c3d2?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/awesome-everybody-should-use-it\/\" rel=\"noopener\">Awesome, everybody should use it<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/mauretto1978\/\" title=\"Posts by mauretto1978\" rel=\"author noopener\">mauretto1978<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">May 31, 2022<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great plugin,<\/p>\n<p>everyone should use it. <\/p>\n<p>The IDE is a valuable plus, and it can be used to learn GraphQL from scratch.<\/p>\n<p>From the developer\u2019s point of view, the plugin is super easy to extend, thanks to the great documentation.<\/p>\n<p>Don\u2019t forget to check the official YouTube channel.<\/p>\n<p>If you need extra support for custom post types and metas, I just released v1.0.70 of my plugin ACPT with full support to WPGraphQL.<\/p>\n<p>Thank you so much John!<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/07efd3c5d48f87c4f21b9a05731202a47508414cd2182b7999ce7f9608569da7?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/07efd3c5d48f87c4f21b9a05731202a47508414cd2182b7999ce7f9608569da7?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/excellent-tool-and-support-8\/\" rel=\"noopener\">Excellent tool and support<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/runonce\/\" title=\"Posts by Camilo\" rel=\"author noopener\">Camilo<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">April 25, 2022<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great tool for getting data from your WP into your SPA.<\/p>\n<p>I had some trouble with a conflicting plugin (Post Types Order) that caused unexpted results when paginating my posts but the support provided by both Jason Bahl and David Levine was absolutely top notch and I managed to resolve the issue within hours.<\/p><\/div>\n<\/p><\/div>\n<\/article><\/div>\n<p>\t\t<a target=\"_blank\" class=\"reviews-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/wp-graphql\/reviews\/\" rel=\"noopener\"><br \/>\n\t\t\tRead all 47 reviews\t\t<\/a><\/div>\n<div id=\"tab-developers\" class=\"plugin-developers section\">\n<h2 id=\"developers-header\">Contributors &amp; Developers<\/h2>\n<div class=\"plugin-contributors\">\n<p>\u201cWPGraphQL\u201d is open source software. The following people have contributed to this plugin.<\/p>\n<p><span class=\"screen-reader-text\">Contributors<\/span><\/p>\n<ul id=\"contributors-list\" class=\"contributors-list\">\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/798f7b954678b4efaafa269e29194e435a61bbd02accfbf2a93ebc37888f9ce5?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/798f7b954678b4efaafa269e29194e435a61bbd02accfbf2a93ebc37888f9ce5?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/jasonbahl\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tJason Bahl\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/0168aae06b1406c39d3ba9ea8138d8de975df7cd08382e9960976e7fe3701c2a?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/0168aae06b1406c39d3ba9ea8138d8de975df7cd08382e9960976e7fe3701c2a?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/tylerbarnes1\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tTyler\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/0b51cdade8f3b0ac34c620396636f857d4189bfdb7f3df4249a5e9b9d114a022?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/0b51cdade8f3b0ac34c620396636f857d4189bfdb7f3df4249a5e9b9d114a022?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/ryankanner\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tRyan Kanner\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/e9ef79a809e178334a16c65dc6d46a66aeb6226486fd316e285d0957b222c127?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/e9ef79a809e178334a16c65dc6d46a66aeb6226486fd316e285d0957b222c127?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/chopinbach\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tEdwin Cromley\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/b88ae0ad9a6c04e5ee6050d959957f7662fd56d036e13f8d5d195e0ea1016036?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/b88ae0ad9a6c04e5ee6050d959957f7662fd56d036e13f8d5d195e0ea1016036?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/kidunot89\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tGeoff Taylor\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/33212bff2915bd72792772a2d3203abe0402352b6be6ba65081036f10560c6e6?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/33212bff2915bd72792772a2d3203abe0402352b6be6ba65081036f10560c6e6?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/justlevine\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tDavid Levine\t\t\t\t<\/a>\n\t\t\t<\/li>\n<\/ul><\/div>\n<div class=\"plugin-development\">\n<p><a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/wp-graphql\" rel=\"noopener\">Translate \u201cWPGraphQL\u201d into your language.<\/a><\/p>\n<h3>Interested in development?<\/h3>\n<p><a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/wp-graphql\/\" rel=\"noopener\" class=\"broken_link\">Browse the code<\/a>, check out the <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/wp-graphql\/\" rel=\"noopener\">SVN repository<\/a>, or subscribe to the <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/wp-graphql\/\" rel=\"noopener\" class=\"broken_link\">development log<\/a> by <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/wp-graphql\/?limit=100&amp;mode=stop_on_copy&amp;format=rss\" rel=\"noopener\" class=\"broken_link\">RSS<\/a>.<\/p>\n<\/div>\n<\/div>\n<div id=\"tab-changelog\" class=\"plugin-changelog section\">\n<h2 id=\"changelog-header\">Changelog<\/h2>\n<h4>1.32.1<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3308\" rel=\"nofollow ugc noopener\">#3308<\/a>: fix: update term mutation was preventing terms from removing the parentId<\/li>\n<\/ul>\n<h4>1.32.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3294\" rel=\"nofollow ugc noopener\">#3294<\/a>: feat: introduce new fields for getting mediaItem files and filePaths<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li>update stable tag<\/li>\n<\/ul>\n<h4>1.31.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3278\" rel=\"nofollow ugc noopener\">#3278<\/a>: feat: add option to provide custom file path for static schemas when using the <code>wp graphql generate-static-schema<\/code> command<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3284\" rel=\"nofollow ugc noopener\">#3284<\/a>: fix: fix: Updated docs link for example of hierarchical data<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3283\" rel=\"nofollow ugc noopener\">#3283<\/a>: fix: Error in update checker when WPGraphQL is active as an mu-plugin<\/li>\n<\/ul>\n<h4>1.30.0<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3250\" rel=\"nofollow ugc noopener\">#3250<\/a>: fix: receiving post for Incorrect uri<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3268\" rel=\"nofollow ugc noopener\">#3268<\/a>: ci: trigger PR workflows on release\/* branches<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3267\" rel=\"nofollow ugc noopener\">#3267<\/a>: chore: fix bleeding edge\/deprecated PHPStan smells [first pass]<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3270\" rel=\"nofollow ugc noopener\">#3270<\/a>: build(deps): bump the npm_and_yarn group across 1 directory with 3 updates<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3271\" rel=\"nofollow ugc noopener\">#3271<\/a>: fix: default cat should not be added when other categories are added<\/li>\n<\/ul>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3251\" rel=\"nofollow ugc noopener\">#3251<\/a>: feat: implement SemVer-compliant update checker<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3196\" rel=\"nofollow ugc noopener\">#3196<\/a>: feat: expose EnqueuedAsset.group and EnqueuedScript.location to schema<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3188\" rel=\"nofollow ugc noopener\">#3188<\/a>: feat: Add WPGraphQL Extensions page to the WordPress admin<\/li>\n<\/ul>\n<h4>1.29.3<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3245\" rel=\"nofollow ugc noopener\">#3245<\/a>: fix: update appsero\/client to v2.0.4 to prevent conflicts with WP6.7<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3243\" rel=\"nofollow ugc noopener\">#3243<\/a>: chore: fix Composer autoloader for WPGraphQL.php<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3242\" rel=\"nofollow ugc noopener\">#3242<\/a>: chore: update Composer dev deps<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3235\" rel=\"nofollow ugc noopener\">#3235<\/a>: chore: general updates to README.md and readme.txt<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3234\" rel=\"nofollow ugc noopener\">#3234<\/a>: chore: update quick-start.md to provide more clarity around using wpackagist<\/li>\n<\/ul>\n<h4>1.29.2<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li>fix: move assets\/blueprint.json under .wordpress-org directory<\/li>\n<\/ul>\n<h4>1.29.1<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3226\" rel=\"nofollow ugc noopener\">#3226<\/a>: chore: add blueprint.json so WPGraphQL can be demo\u2019d with a live preview on WordPress.org<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3218\" rel=\"nofollow ugc noopener\">#3218<\/a>: docs: update upgrading.md to highlight how breaking change releases will be handled<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3214\" rel=\"nofollow ugc noopener\">#3214<\/a>: fix: lazy-resolve Post.sourceUrl and deprecate Post.sourceUrlsBySize<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3224\" rel=\"nofollow ugc noopener\">#3224<\/a>: chore(deps-dev): bump symfony\/process from 5.4.40 to 5.4.46 in the composer group<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3219\" rel=\"nofollow ugc noopener\">#3219<\/a>: test: add tests for querying different sizes of media items<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3229\" rel=\"nofollow ugc noopener\">#3229<\/a>: fix: Deprecated null value warning in titleRendered callback<\/li>\n<\/ul>\n<h4>1.29.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3208\" rel=\"nofollow ugc noopener\">#3208<\/a>: feat: expose commenter edge fields<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3207\" rel=\"nofollow ugc noopener\">#3207<\/a>: feat: introduce get_graphql_admin_notices and convert AdminNotices class to a singleton<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3213\" rel=\"nofollow ugc noopener\">#3213<\/a>: chore(deps): bump the npm_and_yarn group across 1 directory with 4 updates<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3212\" rel=\"nofollow ugc noopener\">#3212<\/a>: chore(deps): bump dset from 3.1.3 to 3.1.4 in the npm_and_yarn group across 1 directory<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3211\" rel=\"nofollow ugc noopener\">#3211<\/a>: chore: add LABELS.md<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3201\" rel=\"nofollow ugc noopener\">#3201<\/a>: fix: ensure connectedTerms returns terms for the specified taxonomy only<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3199\" rel=\"nofollow ugc noopener\">#3199<\/a>: chore(deps-dev): bump the npm_and_yarn group across 1 directory with 2 updates<\/li>\n<\/ul>\n<h4>1.28.1<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3189\" rel=\"nofollow ugc noopener\">#3189<\/a>: fix: [regression] missing placeholder in $wpdb-&gt;prepare() call<\/li>\n<\/ul>\n<h4>1.28.0<\/h4>\n<p><strong>Upgrade Notice<\/strong><\/p>\n<p>This release contains an internal refactor for how the Type Registry is generated which should lead to significant performance improvements for most users. While there is no known breaking changes, because this change impacts every user we highly recommend testing this release thoroughly on staging servers to ensure the changes don\u2019t negatively impact your projects.<\/p>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3172\" rel=\"nofollow ugc noopener\">#3172<\/a>: feat: only <code>eagerlyLoadType<\/code> on introspection requests.<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3181\" rel=\"nofollow ugc noopener\">#3181<\/a>: ci: replace <code>docker-compose<\/code> commands with <code>docker compose<\/code><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3182\" rel=\"nofollow ugc noopener\">#3182<\/a>: ci: test against WP 6.6<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3183\" rel=\"nofollow ugc noopener\">#3183<\/a>: fix: improve performance of SQL query in the user loader<\/li>\n<\/ul>\n<h4>1.27.2<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3167\" rel=\"nofollow ugc noopener\">#3167<\/a>: fix: missing .svg causing admin_menu not to be registered<\/li>\n<\/ul>\n<h4>1.27.1<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3066\" rel=\"nofollow ugc noopener\">#3066<\/a>: fix: merge query arg arrays instead of overriding.<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3151\" rel=\"nofollow ugc noopener\">#3151<\/a>: fix: update dev-deps and fix <code>WPGraphQL::get_static_schema()<\/code><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3152\" rel=\"nofollow ugc noopener\">#3152<\/a>: fix: handle regression when implementing interface with identical args.<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3153\" rel=\"nofollow ugc noopener\">#3153<\/a>: chore(deps-dev): bump composer\/composer from 2.7.6 to 2.7.7 in the composer group across 1 directory<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3155\" rel=\"nofollow ugc noopener\">#3155<\/a>: chore(deps-dev): bump the npm_and_yarn group across 1 directory with 2 updates<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3160\" rel=\"nofollow ugc noopener\">#3160<\/a>: chore: Update branding assets<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3162\" rel=\"nofollow ugc noopener\">#3162<\/a>: fix: set_query_arg should not merge args<\/li>\n<\/ul>\n<h4>1.27.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3143\" rel=\"nofollow ugc noopener\">#3143<\/a>: feat: Enhance tab state management with query arguments and localStorage fallback<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3139\" rel=\"nofollow ugc noopener\">#3139<\/a>: fix: <code>$settings_fields<\/code> param on \u201cgraphql_get_setting_section_field_value\u201d filter not passing the correct type<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3137\" rel=\"nofollow ugc noopener\">#3137<\/a>: fix: WPGraphQL Settings page fails to load when \u201cgraphiql_enabled\u201d setting is \u201coff\u201d<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3133\" rel=\"nofollow ugc noopener\">#3133<\/a>: build: clean up dist<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3146\" rel=\"nofollow ugc noopener\">#3146<\/a>: test: add e2e test coverage for tabs in the settings page<\/li>\n<\/ul>\n<h4>1.26.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3125\" rel=\"nofollow ugc noopener\">#3125<\/a>: refactor: improve query handling in AbstractConnectionResolver\n<ul>\n<li>new: <code>graphql_connection_pre_get_query<\/code> filter<\/li>\n<li>new: <code>AbstractConnectionResolver::is_valid_query_class()<\/code><\/li>\n<li>new: <code>AbstractConnectionResolver::get_query()<\/code><\/li>\n<li>new: <code>AbstractConnectionResolver::get_query_class()<\/code><\/li>\n<li>new: <code>AsbtractConnectionResolver::query_class()<\/code><\/li>\n<li>new: <code>AbstractConnectionResolver::$query_class<\/code><\/li>\n<\/ul>\n<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3124\" rel=\"nofollow ugc noopener\">#3124<\/a>: refactor: split <code>AbstractConnectionResolver::get_args()<\/code> and <code>::get_query_args()<\/code> into <code>::prepare_*()<\/code> methods<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3123\" rel=\"nofollow ugc noopener\">#3123<\/a>: refactor: split <code>AbstractConnectionResolver::get_ids()<\/code> into <code>::prepare_ids()<\/code><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3121\" rel=\"nofollow ugc noopener\">#3121<\/a>: refactor: split <code>AbstractConnectionResolver::get_nodes()<\/code> and <code>get_edges()<\/code> into <code>prepare_*()<\/code> methods<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3120\" rel=\"nofollow ugc noopener\">#3120<\/a>: refactor: wrap <code>AbstractConnectionResolver::is_valid_model()<\/code> in <code>::get_is_valid_model()<\/code><\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3125\" rel=\"nofollow ugc noopener\">#3125<\/a>: refactor: improve query handling in AbstractConnectionResolver\n<ul>\n<li>Implement PHPStan Generic Type<\/li>\n<li>Update generic Exceptions to InvariantViolation<\/li>\n<\/ul>\n<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3127\" rel=\"nofollow ugc noopener\">#3127<\/a>: chore: update references to the WPGraphQL Slack Community to point to the new WPGraphQL Discord community instead.<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3122\" rel=\"nofollow ugc noopener\">#3122<\/a>: chore: relocate <code>AbstractConnectionResolver::is_valid_offset()<\/code> with other abstract methods.<\/li>\n<\/ul>\n<h4>1.25.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3104\" rel=\"nofollow ugc noopener\">#3104<\/a>: feat: add <code>AbsractConnectionResolver::pre_should_execute()<\/code>. Thanks @justlevine!<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><br \/>\n\u2013 <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3104\" rel=\"nofollow ugc noopener\">#3104<\/a>: refactor: <code>AbstractConnectionResolver::should_execute()<\/code> Thanks @justlevine!<br \/>\n\u2013 <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3104\" rel=\"nofollow ugc noopener\">#3112<\/a>: fix: fixes a regression from v1.24.0 relating to field arguments defined on Interfaces not being properly merged onto Object Types that implement the interface. Thanks @kidunot89!<br \/>\n\u2013 <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3114\" rel=\"nofollow ugc noopener\">#3114<\/a>: fix: node IDs not showing in the Query Analyzer \/ X-GraphQL-Keys when using DataLoader-&gt;load_many()<br \/>\n\u2013 <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3116\" rel=\"nofollow ugc noopener\">#3116<\/a>: chore: Update WPGraphQLTestCase to v3. Thanks @kidunot89!<\/p>\n<h4>1.24.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3084\" rel=\"nofollow ugc noopener\">#3084<\/a>: perf: refactor PluginConnectionResolver to only fetch plugins once. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3088\" rel=\"nofollow ugc noopener\">#3088<\/a>: refactor: improve loader handling in AbstractConnectionResolver. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3087\" rel=\"nofollow ugc noopener\">#3087<\/a>: feat: improve query amount handling in AbstractConnectionResolver. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3086\" rel=\"nofollow ugc noopener\">#3086<\/a>: refactor: add AbstractConnectionResolver::get_unfiltered_args() public getter. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3085\" rel=\"nofollow ugc noopener\">#3085<\/a>: refactor: add AbstractConnectionResolver::prepare_page_info()and only instantiate once. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3083\" rel=\"nofollow ugc noopener\">#3083<\/a>: refactor: deprecate camelCase methods in AbstractConnectionResolver for snake_case equivalents. Thanks @justlevine!<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3095\" rel=\"nofollow ugc noopener\">#3095<\/a>: chore: lint for superfluous whitespace. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3100\" rel=\"nofollow ugc noopener\">#3100<\/a>: fix: recursion issues with interfaces<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3082\" rel=\"nofollow ugc noopener\">#3082<\/a>: chore: prepare ConnectionResolver classes for v2 backport<\/li>\n<\/ul>\n<h4>1.23.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3073\" rel=\"nofollow ugc noopener\">#3073<\/a>: feat: expose <code>hasPassword<\/code> and <code>password<\/code> fields on Post objects. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3091\" rel=\"nofollow ugc noopener\">#3091<\/a>: feat: introduce actions and filters for GraphQL Admin Notices<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3079\" rel=\"nofollow ugc noopener\">#3079<\/a>: fix: GraphiQL IDE test failures<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3084\" rel=\"nofollow ugc noopener\">#3084<\/a>: perf: refactor PluginConnectionResolver to only fetch plugins once. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3092\" rel=\"nofollow ugc noopener\">#3092<\/a>: ci: test against wp 6.5<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3093\" rel=\"nofollow ugc noopener\">#3093<\/a>: ci: Update actions in GitHub workflows and cleanup. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3093\" rel=\"nofollow ugc noopener\">#3093<\/a>: chore: update Composer dev-deps and lint. Thanks @justlevine!<\/li>\n<\/ul>\n<h4>1.22.1<\/h4>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3067\" rel=\"nofollow ugc noopener\">#3067<\/a>: fix: respect show avatar setting<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3063\" rel=\"nofollow ugc noopener\">#3063<\/a>: fix: fixes a bug in cursor stability filters that could lead to empty order<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3070\" rel=\"nofollow ugc noopener\">#3070<\/a>: test(3063): Adds test for <a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3063\" rel=\"nofollow ugc noopener\">#3063<\/a><\/li>\n<\/ul>\n<h4>1.22.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3044\" rel=\"nofollow ugc noopener\">#3044<\/a>: feat: add <code>graphql_pre_resolve_menu_item_connected_node<\/code> filter<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3043\" rel=\"nofollow ugc noopener\">#3039<\/a>: feat: add <code>UniformResourceIdentifiable<\/code> interface to <code>Comment<\/code> type<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3020\" rel=\"nofollow ugc noopener\">#3020<\/a>: feat: introduce <code>graphql_query_analyzer_get_headers<\/code> filter<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3062\" rel=\"nofollow ugc noopener\">#3062<\/a>: ci: pin wp-browser to \u201c&lt;3.5\u201d to allow automated tests to run properly<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3057\" rel=\"nofollow ugc noopener\">#3057<\/a>: fix: <code>admin_enqueue_scripts<\/code> callback should expect a possible <code>null<\/code> value passed to it<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3048\" rel=\"nofollow ugc noopener\">#3048<\/a>: fix: <code>isPostsPage<\/code> on content type<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3043\" rel=\"nofollow ugc noopener\">#3043<\/a>: fix: return empty when filtering <code>menuItems<\/code> by a location with no assigned items<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3045\" rel=\"nofollow ugc noopener\">#3045<\/a>: fix: <code>UsersConnectionSearchColumnEnum<\/code> values should be prefixed with <code>user_<\/code><\/li>\n<\/ul>\n<h4>1.21.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3035\" rel=\"nofollow ugc noopener\">#3035<\/a>: feat: provide better error when field references a type that does not exist<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3027\" rel=\"nofollow ugc noopener\">#3027<\/a>: feat: Add register_graphql_admin_notice API and intial use to inform users of the new WPGraphQL for ACF plugin<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3038\" rel=\"nofollow ugc noopener\">#3038<\/a>: chore(deps-dev): bump the composer group across 1 directories with 1 update. Thanks @dependabot!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3033\" rel=\"nofollow ugc noopener\">#3033<\/a>: fix: php deprecation error for dynamic properties on AppContext class<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3031\" rel=\"nofollow ugc noopener\">#3031<\/a>: fix(graphiql): Allow GraphiQL to run even if a valid schema cannot be returned. Thanks @linucks!<\/li>\n<\/ul>\n<h4>1.20.0<\/h4>\n<p><strong>New Features<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3013\" rel=\"nofollow ugc noopener\">#3013<\/a>: feat: output GRAPHQL_DEBUG message if requested amount is larger than connection limit. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3008\" rel=\"nofollow ugc noopener\">#3008<\/a>: perf: Expose graphql_should_analyze_queries as setting. Thanks @justlevine!<\/li>\n<\/ul>\n<p><strong>Chores \/ Bugfixes<\/strong><\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3022\" rel=\"nofollow ugc noopener\">#3022<\/a>: chore: add @justlevine to list of contributors! \ud83d\ude4c \ud83e\udd73<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3011\" rel=\"nofollow ugc noopener\">#3011<\/a>: chore: update composer dev-dependencies and use php-compatibility:develop branch to 8.0+ lints. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3010\" rel=\"nofollow ugc noopener\">#3010<\/a>: chore: implement stricter PHPDoc types. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3009\" rel=\"nofollow ugc noopener\">#3009<\/a>: chore: implement stricter PHPStan config and clean up unnecessary type-guards. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3007\" rel=\"nofollow ugc noopener\">#3007<\/a>: fix: call html_entity_decode() with explicit flags and decode single-quotes. Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3006\" rel=\"nofollow ugc noopener\">#3006<\/a>: fix: replace deprecated AbstractConnectionResolver::setQueryArg() call with ::set_query_arg(). Thanks @justlevine!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/3004\" rel=\"nofollow ugc noopener\">#3004<\/a>: docs: Update using-data-from-custom-database-tables.md<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/2998\" rel=\"nofollow ugc noopener\">#2998<\/a>: docs: Update build-your-first-wpgraphql-extension.md. Thanks @Jacob-Daniel!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/2997\" rel=\"nofollow ugc noopener\">#2997<\/a>: docs: update wpgraphql-concepts.md. Thanks @Jacob-Daniel!<\/li>\n<li><a target=\"_blank\" href=\"https:\/\/github.com\/wp-graphql\/wp-graphql\/pull\/2996\" rel=\"nofollow ugc noopener\">#2996<\/a>: fix: Field id duplicates uri field description. Thanks @marcinkrzeminski!<\/li>\n<\/ul>\n<p>View Full Changelog: https:\/\/github.com\/wp-graphql\/wp-graphql\/blob\/develop\/CHANGELOG.md<\/p>\n<\/div><\/div>\n<p><!-- .entry-content --><\/p>\n<p>\t<!-- .entry-meta --><br \/>\n<\/article>\n<p><br \/>\n<br \/><a href=\"https:\/\/wordpress.org\/plugins\/wp-graphql\/\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>WPGraphQL By Jason Bahl Download Live Preview Details Reviews Development Support Description WPGraphQL is a free, open-source WordPress plugin that provides an extendable GraphQL schema and API for any WordPress site. Get Started Install WPGraphQL: wp plugin install wp-graphql &#8211;activate Try it out: Live Demo Read the Quick Start Guide. Join the Community on Discord [&hellip;]<\/p>","protected":false},"author":92,"featured_media":3319,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[1933,39,40],"tags":[2260],"class_list":["post-3318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community-plugin","category-lite-version","category-wp-plugin-solution","tag-wpgraphql"],"acf":[],"fifu_image_url":"https:\/\/ps.w.org\/wp-graphql\/assets\/banner-772x250.png?rev=3111985","_links":{"self":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/users\/92"}],"replies":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/comments?post=3318"}],"version-history":[{"count":0,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3318\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media\/3319"}],"wp:attachment":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media?parent=3318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/categories?post=3318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/tags?post=3318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}