valu-digital / wp-graphql-polylang

WPGraphQL Polylang Extension for WordPress
https://packagist.org/packages/valu/wp-graphql-polylang
GNU General Public License v2.0
124 stars 20 forks source link

Language field do not exist in ACF options #52

Open robert-orlinski opened 3 years ago

robert-orlinski commented 3 years ago

Hi, I am trying to get access to the "language" field while querying ACF option fields but I am not able to do so - there is no such field and as a result, there is no way to do a query like this:

siteSettings(language: EN) {
    siteSettings {
        footerTitle
    }
}

I have the plugin installed in WordPress, along with ACF Options for Polylang, Advanced Custom Fields PRO, WP Gatsby, WP GraphQL, WP GraphQL Polylang, WPGraphQL Custom Post Type UI, WPGraphQL for Advanced Custom Fields - uninstalling singular and checking if the problem disappears does not work and that's the reason I am asking here.

From the Gatsby side, I was using both gatsby-source-wordpress and gatsby-source-graphql, and no one is showing anything like "languages" filter.

Thank you in advance for any help!

BenjaminZekavica commented 3 years ago

Same here :/ I hope that the developer can fix it

sven-ra commented 2 years ago

Same here.

salmanamemon commented 2 years ago

Facing the same issue. I hope it get fixed soon otherwise another option is to go with WPML.

8simsim8 commented 2 years ago

Same here. On two projects it became necessary to use. Looks like I'll have to change the plugin to WPML

sidyes commented 2 years ago

Any Updates?

jeanfredrik commented 2 years ago

The plugin emits a warning if there is no explicit graphql_field_name on an options page and skips adding a language argument. My workaround was to add this filter:

use WPGraphQL\Utils\Utils;

/**
 * Makes sure that an explicit graphql_field_name name is set for each ACF
 * options page, because wp-graphql-polylang won’t add language support to it
 * otherwise.
 */
add_filter("acf/validate_options_page", function ($page) {
  if (!empty($page["show_in_graphql"]) && empty($page["graphql_field_name"])) {
    $type_name = Utils::format_type_name($page["menu_slug"]);
    $page["graphql_field_name"] = Utils::format_field_name($type_name);
  }
  return $page;
});
brianpereradap commented 2 years ago

@esamattis Any update on this?

brianpereradap commented 2 years ago

The plugin emits a warning if there is no explicit graphql_field_name on an options page and skips adding a language argument. My workaround was to add this filter:

use WPGraphQL\Utils\Utils;

/**
 * Makes sure that an explicit graphql_field_name name is set for each ACF
 * options page, because wp-graphql-polylang won’t add language support to it
 * otherwise.
 */
add_filter("acf/validate_options_page", function ($page) {
  if (!empty($page["show_in_graphql"]) && empty($page["graphql_field_name"])) {
    $type_name = Utils::format_type_name($page["menu_slug"]);
    $page["graphql_field_name"] = Utils::format_field_name($type_name);
  }
  return $page;
});

This workaround worked for me. Thanks.

vann-at-cpcp-dot-tw commented 6 months ago

The plugin emits a warning if there is no explicit graphql_field_name on an options page and skips adding a language argument. My workaround was to add this filter:

use WPGraphQL\Utils\Utils;

/**
 * Makes sure that an explicit graphql_field_name name is set for each ACF
 * options page, because wp-graphql-polylang won’t add language support to it
 * otherwise.
 */
add_filter("acf/validate_options_page", function ($page) {
  if (!empty($page["show_in_graphql"]) && empty($page["graphql_field_name"])) {
    $type_name = Utils::format_type_name($page["menu_slug"]);
    $page["graphql_field_name"] = Utils::format_field_name($type_name);
  }
  return $page;
});

This doesn't work. After adding this filter, although the "language" parameter can appear, no matter what value is passed to "language", the result always returns the default value.

vann-at-cpcp-dot-tw commented 6 months ago

The plugin emits a warning if there is no explicit graphql_field_name on an options page and skips adding a language argument. My workaround was to add this filter:

use WPGraphQL\Utils\Utils;

/**
 * Makes sure that an explicit graphql_field_name name is set for each ACF
 * options page, because wp-graphql-polylang won’t add language support to it
 * otherwise.
 */
add_filter("acf/validate_options_page", function ($page) {
  if (!empty($page["show_in_graphql"]) && empty($page["graphql_field_name"])) {
    $type_name = Utils::format_type_name($page["menu_slug"]);
    $page["graphql_field_name"] = Utils::format_field_name($type_name);
  }
  return $page;
});

This doesn't work. After adding this filter, although the "language" parameter can appear, no matter what value is passed to "language", the result always returns the default value.

Add the filter by @jeanfredrik and the following line both can fix this issue. 截圖 2024-02-25 14 18 45

predaytor commented 6 months ago

@vann-at-cpcp-dot-tw thx man!