-
-
Notifications
You must be signed in to change notification settings - Fork 130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Woocommerce products can not be queried in another language #847
Comments
Not sure if this is a bug with wp-graphql-wpml or wp-graphql-woocommerce. Clarifcation would be great! This is a very crucial feature, which makes the use of graphql for multilangual woocommerce sites impossible. |
@cankahya I think it might be an issue with |
I've also noticed that you are using this version https://github.com/rburgst/wp-graphql-wpml, which seems to be unmaintained. Have you tried with the official one from here https://wpml.org/documentation/related-projects/wpml-graphql/? Their version is from 2023 https://wpml.org/compatibility/2023/05/wpml-graphql-build-headless-multilingual-wordpress-sites/ |
@creative-andrew Thanks for taking your time looking into this. I will test the plugin you suggested and report my findings :) |
@cankahya any news from this? |
I have a suspicion this is happening because of the difference between a The way to test this is to open up WPML GraphQL's wpml-graphql/classes/Hooks/ObjectType/LanguageType.php and add… register_graphql_field(
'RootQueryToProductUnionConnectionWhereArgs',
self::FILTER_NAME,
[
'type' => self::MAIN_FIELD_TYPE,
'description' => __('Filter product unions by language code', 'wp-graphql-wpml'),
]
); After that, the language query works as expected, e.g. fragment ProductContentFragment on ProductUnion {
id
databaseId
slug
name
}
query GetProductsInEnglish {
products(first: 100, where: {status: "publish", language: "en"}) {
nodes {
...ProductContentFragment
... on SimpleProduct {
name
}
}
}
}
query GetProductsInTraditionalChinese {
products(first: 100, where: {status: "publish", language: "zh-hant"}) {
nodes {
...ProductContentFragment
... on SimpleProduct {
name
}
}
}
} Plugins: |
Querying individual Products by slug to get their translationGiven the following fragment: fragment BasicProductContent on Product {
__typename # e.g. "SimpleProduct"
type # e.g. "SIMPLE"
id # The GraphQL ID
databaseId # The WP post's database ID
sku # A manually configured attribute of the WP post
languageCode # 'en' or 'zh-hant'
guid # A URI using the WP post's database ID
link # The complete URI to the WP post using the slug
uri # All the path parameters for the WP post
slug # The WP post's slug path parameter
} Query: Native languagequery SimpleProductNativeLanguage {
product(id: "native-slug", idType: SLUG) {
...BasicProductContent
}
} Response{
"data": {
"product": {
"__typename": "SimpleProduct",
"type": "SIMPLE",
"id": "graphql-id-obfuscated-native",
"databaseId": 1234,
"sku": "SKU0001",
"languageCode": "en",
"guid": "https://www.domain.com/?post_type=product&p=1234",
"link": "https://www.domain.com/shop/native-slug/",
"uri": "/shop/native-slug/",
"slug": "native-slug"
}
}
} Query: Translationquery SimpleProductListingTranslation {
product(id: "translated-slug", idType: SLUG) {
...BasicProductContent
}
} Response{
"data": {
"product": {
"__typename": "SimpleProduct",
"type": "SIMPLE",
"id": "graphql-id-obfuscated-translated",
"databaseId": 4321,
"sku": "SKU0001",
"languageCode": "zh-hant",
"guid": "https://www.domain.com/?post_type=product&p=4321",
"link": "https://www.domain.com/shop/native-slug/",
"uri": "/shop/native-slug/",
"slug": "translated-slug"
}
}
} Querying for translations of the base productGIVEN: the above works, so we know that we have working products and translations. fragment TranslationsOfProductContent on Product {
__typename
languageCode
translations {
language {
language_code
}
}
} Query: Native Language with
|
Describe the bug
It is not possible to query woocommerce products for another locale, using wp-graphql-wpml
To Reproduce
The following query should return the english versions of the products. Instead it returns the main locale (german in this case):
Query
{ products(where: {wpmlLanguage: "en"}) { nodes { id slug name ... on SimpleProduct { id name buecherFields { buchKategorien { nodes { name slug } } } buchInfos { buchInfos } locale { locale id } } } } }
Response
{
"data": {
"products": {
"nodes": [
{
"id": "cHJvZHVjdDoxMDE4Mg==",
"slug": "sollberger-boegli",
"name": "Sollberger Bögli",
"buecherFields": {
"buchKategorien": {
"nodes": [
{
"name": "De aedibus",
"slug": "de-aedibus"
}
]
}
},
"buchInfos": {
"buchInfos": "
Herausgegeben von: Heinz Wirz
\n"\nTextbeitrag: Katharina Marchal
},
"locale": {
"locale": "de_DE",
"id": "de_DE"
}
},
....
Expected behavior
The products should be returned in english.
Screenshots
Desktop (please complete the following information):
Plugin Versions
The text was updated successfully, but these errors were encountered: