* fix: address WordPress.org plugin review feedback
- Prefix the session transaction queue transient with the plugin's
graphql_woocommerce_ namespace instead of the generic "woo_" word, to
avoid collisions (Plugin Directory: prefix data storage).
- Declare the WooCommerce dependency via the "Requires Plugins: woocommerce"
plugin header.
- Bump README.txt "Tested up to" to 7.0.
- Ship composer.json in the distributed plugin (drop it, and composer.lock,
from composer archive excludes) so the build is reproducible/reviewable.
* chore: rename plugin to "GraphQL for eCommerce" for trademark compliance
The WordPress.org plugin review flagged the display name/slug for beginning
with the "WPGraphQL" trademark (and the "WooGraphQL" portmanteau of the
WooCommerce mark), which can imply official affiliation.
- Display name (plugin header + readme title) -> "GraphQL for eCommerce".
- Slug/text domain -> "graphql-for-ecommerce" (header, all i18n string
literals, and the PHPCS WordPress.WP.I18n text_domain config).
- Update user-facing notices/errors that named the old plugin.
"WooGraphQL" remains the project's informal nickname (repo, docs, community),
just not in the WordPress.org directory's official name/slug. Internal file
names and GitHub URLs are unchanged.
* fix: keep test-only dev deps out of the committed composer.json
The committed manifest mirrors develop (lint/stan dev deps only); CI adds the
test suite deps at runtime via `composer installTestEnv`. A previous commit
captured the installTestEnv-modified composer.json, desyncing it from
composer.lock and breaking `composer install` in CI.
* chore: regenerate composer.lock (refresh dev dependencies)
Regenerate the lock from the manifest so it is in sync (fixes the CI
`composer install` failure) and refresh dependencies in the process —
firebase/php-jwt v7.0.4 -> v7.1.0 plus 11 others, with vendor-prefixed
re-strauss'd to match. Full wpunit suite passes against the updated deps
(305 tests, 835 assertions).
* chore: rename text domain in createdVia/attribution strings from #1018#1018 (createdVia + order attribution) merged into develop after the rename
commit was authored, so its new i18n strings still used the old
'wp-graphql-woocommerce' text domain. Update them to 'graphql-for-ecommerce'
to match the rename.
* perf: Migrate type descriptions to lazy lambdas
Convert all eager description strings from:
'description' => __( '...', 'wp-graphql-woocommerce' ),
to deferred lambdas:
'description' => static function () { return __( '...', 'wp-graphql-woocommerce' ); },
This defers the __() translation call until the description is actually
needed (e.g. during schema introspection), avoiding unnecessary
translation overhead on every GraphQL request. Mirrors the pattern
used in WPGraphQL core.
1206 descriptions converted across 169 files.
* chore: Linter compliances met
* fix: improve i18n compatibility for WPML, Polylang, and non-latin character support
- Add Label::get_safe_enum_name() utility with optional transliteration
for non-latin tax class/attribute/taxonomy names (#637, #409)
- Add "Transliterate non-latin characters" admin setting
- Replace get_page_by_path() with WP_Query for product slug resolution
so WPML/Polylang can hook into the standard query pipeline (#403, #368)
- Split product connections: `products` (toType: Product) and
`productsWithVariations` (toType: ProductUnion) so i18n plugins can
register language where args on the standard type name (#811, #952)
- Add ProductTypesWithVariationsEnum for the ProductUnion connection
- Add i18n compatibility tests
* chore: Linter compliances met
- Fix coupon productCategories and excludedProductCategories connections
to convert term_ids to term_taxonomy_ids before querying, resolving
failures when term_id and term_taxonomy_id differ (shared terms across
taxonomies)
- Remove dead WC post type taxonomy connection loop that was skipping
products/variations and had no effect on remaining post types
- Remove unused WPGraphQL and WP_GraphQL_WooCommerce imports
- Add coupon category connection test with mismatched term IDs and
exclude filter validation
- Add product category test with mismatched term_id/term_taxonomy_id
regression coverage
The array_intersect_key call in the orders connection resolver was
filtering all $args (including first, last, after, before) against
get_connection_args('public') keys. Since get_connection_args returns
where arg definitions (not top-level connection args), the intersection
matched nothing and stripped everything.
Fix: only filter $args['where'] instead of all $args, so pagination
and other connection args are preserved for non-admin customers.
* refactor: Product_Attribute_Connection_Resolver class refactor to be more consistent with contemporaries
* refactor: Product_Attribute_Connection_Resolver class refactoring continued
* feat: implement productAttributes root query, products connection on ProductAttribute, and category-scoped attributes
- Implement build_nodes_from_global_attributes() to return WC_Product_Attribute
objects from wc_get_attribute_taxonomies()
- Fix build_connection() infinite recursion and undefined variable bugs
- Add products connection from ProductAttribute interface to Product via
tax_query (global) or meta_query (local) in class-products.php
- Add productAttributes connection from ProductCategory to GlobalProductAttribute
in class-product-attributes.php
- Move localAttributes/globalAttributes connections from class-product-attributes.php
to ProductWithAttributes interface get_connections()
- Fix ProductAttribute id resolvers to use Relay::toGlobalId() instead of
dynamically set _relay_id
- Remove deprecated get_items() method and GLOBAL_ID_DELIMITER constant
- Add ProductAttributeConnectionsTest with 4 tests covering root query,
global/local attribute products connections, and category-scoped attributes
- Update ProductAttributeQueriesTest expectations for new id format and
taxonomy-prefixed attribute names
* feat: Add support for brands (#918)
* feat: add product brand support with where args, taxonomy filter, and taxonomy mutation input fields
- Register product_brand taxonomy with WPGraphQL (fix indentation from #964)
- Add productBrand/productBrandIn/productBrandNotIn/productBrandId/productBrandIdIn/productBrandIdNotIn
where args on products connection
- Add product_brand to taxonomy args map and case statements in product connection resolver
- Register additional input fields (display, menuOrder, imageId) on
CreateProductCategoryInput and UpdateProductCategoryInput mutations
- Split ProductTaxonomyQueriesTest into ProductCategoryQueriesTest,
ProductTagQueriesTest, ProductCategoryMutationsTest, ProductTagMutationsTest
- Add ProductBrandQueriesTest with 8 tests covering queries, connections,
hierarchy, where args, taxonomy filter, and CRUD mutations
---------
Co-authored-by: Geoff Taylor <geoff@axistaylor.com>
* fix: "Product" interface applied to all sub Product interfaces for more optimal schema shape
* fix: more inconsistencies fixed.
* feat: "ProductWithAttributes" interface radded to "ProductWithVariations" interface
* fix: product connection resolution refactored to better work with the ProductQuery class
* chore: Linter and PHPStan compliance met
* devops: New product connection tests implemented and passing
* fix: products connection pricing filters fixed
* devops: CartTransactionQueueCest skipped until failing PHP version removed from CI matrix
* fix: General bugfixes and improvements
* devops: New mutations and types tested and compliance with Linter and PHPStan
* chore: hooks added to the mutation resolvers
* feat: permission checks added
* chore: Linter and compliance met
* chore: Linter and compliance met
* docs: Pro docs drafted.
* feat: billingEmail added to OrderConnectionWhereArgs
* feat: More drafts added.
* docs: More documentation introduced.
* docs: page meta added to each new section
* chore: Linter compliance met
* docs: page meta added to each new section
* docs: Some revision and screenshots added.
* docs: More revisions
* feat: more revisions and images added.
* updated docs after proofreading
* chore: HPOS compatibility declared.
* docs: Some word consistency issues fixed.
* docs: Introductions and conclusions added.
* chore: Linter compliance met
---------
Co-authored-by: Craig Wilcox <craig@simplur.com>
* chore: avoid magic constants [PHPCS]
* chore: change ruleset to wp-graphql-cs and lint
* devops: HPOS added back to CI with the release of WC 3.9
---------
Co-authored-by: Geoff Taylor <geoff@axistaylor.com>
* fix: product variation raw price not visible for public users
* fixup! fix: product variation raw price not visible for public users
* fixup! fixup! fix: product variation raw price not visible for public users
* chore: WPCS compliance met
Co-authored-by: Andres A <andres@Andress-MacBook-Pro.local>
Co-authored-by: Geoff Taylor <geoff@axistaylor.com>
* - implement Node on different Types
* - update class-customers to return arrays for edges and nodes
- move id resolver from product-attribute interface to the specific types
* - return empty arrays for edges/nodes for coupon connections
- update test to check for falsy vs null
* - remove manual registration of the `Product` Interface
- register the fields to the Product Interface
* - fix code style
* - fix code style
* - no longer pass type registry to Product::register_interface()
* - use post type registry to register the Product type as an Interface
* WPGraphQL v1.13.x support added.
* WPGraphQL v1.13.x support added.
* fix: filter corrected.
* fix: Needed code restored
* fix: Needed code restored
* parent field no longer overwritten
* chore: WPCS compliance met.
Co-authored-by: Geoff Taylor <geoff@axistaylor.com>
* fix: Product and order connections use respective queryclasses.
* fix: include + exclude product connection where args fixed and tested
* chore: docker-compose.yml restored
* fix: Huge refactor across schema and unit tests
* - add shipping_method loader in class-core-schema-filters.php
* - Update class-wc-db-loader.php to respect the new SHIPPING_METHOD loader with a `load_shipping_method_from_id()` function
* - Convert Shipping_Method_Connection_Resolver to extend AbstractConnectionResolver
* - Replace resolver for Shipping Methods connection. Remove use of `resolveNode` and replace the resolver with the new connection class `get_connection()` call
* chore: Factory class refactored.
* - update the function that registers Product Types to the Schema to use the value from the `get_enabled_product_types()` as the Type name and the key as the fieldName
* chore: PaymentGatewayQueriesTest refactored.
* chore: WPCS compliance met
* chore: Syntax error fixed.
Co-authored-by: Jason Bahl <jasonbahl@mac.com>