• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wp-graphql / wp-graphql-woocommerce / 23266749290

18 Mar 2026 08:59PM UTC coverage: 83.127% (-0.06%) from 83.184%
23266749290

push

github

web-flow
feat: New fees input fields add to `cart` query and `checkout` mutation (#929)

* feat: New fees input fields add to `cart` query and `checkout` mutation

* chore: Linter compliance met

* devops: CartQueriesTest tests updated

105 of 108 new or added lines in 8 files covered. (97.22%)

18 existing lines in 2 files now uncovered.

12652 of 15220 relevant lines covered (83.13%)

76.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

12.1
/includes/class-wp-graphql-woocommerce.php
1
<?php
2
/**
3
 * Initializes a singleton instance of WP_GraphQL_WooCommerce
4
 *
5
 * @package WPGraphQL\WooCommerce
6
 * @since 0.0.1
7
 */
8

9
namespace WPGraphQL\WooCommerce;
10

11
// Exit if accessed directly.
12
defined( 'ABSPATH' ) || exit;
13

14
if ( ! class_exists( '\WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce' ) ) :
15

16
        /**
17
         * Class WP_GraphQL_WooCommerce
18
         */
19
        final class WP_GraphQL_WooCommerce {
20
                /**
21
                 * Stores the instance of the WP_GraphQL_WooCommerce class
22
                 *
23
                 * @var null|\WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce The one true WP_GraphQL_WooCommerce
24
                 */
25
                private static $instance = null;
26

27
                /**
28
                 * Returns a WP_GraphQL_WooCommerce Instance.
29
                 *
30
                 * @return \WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce
31
                 */
32
                public static function instance() {
33
                        if ( is_null( self::$instance ) ) {
×
34
                                self::$instance = new self();
×
35
                                self::$instance->includes();
×
36
                                self::$instance->setup();
×
37
                        }
38

39
                        /**
40
                         * Fire off init action
41
                         *
42
                         * @param \WPGraphQL\WooCommerce\WP_GraphQL_WooCommerce $instance The instance of the WP_GraphQL_WooCommerce class
43
                         */
44
                        do_action( 'graphql_woocommerce_init', self::$instance );
×
45

46
                        // Return the WPGraphQLWooCommerce Instance.
47
                        return self::$instance;
×
48
                }
49

50
                /**
51
                 * Returns WooCommerce post-types registered to the WC_Post_Crud_Loader
52
                 *
53
                 * @return array
54
                 */
55
                public static function get_post_types() {
56
                        return apply_filters(
162✔
57
                                'graphql_woocommerce_post_types',
162✔
58
                                [
162✔
59
                                        'product',
162✔
60
                                        'product_variation',
162✔
61
                                        'shop_coupon',
162✔
62
                                        'shop_order',
162✔
63
                                        'shop_order_refund',
162✔
64
                                ]
162✔
65
                        );
162✔
66
                }
67

68
                /**
69
                 * Returns WooCommerce product types to be exposed to the GraphQL schema.
70
                 *
71
                 * @return array
72
                 */
73
                public static function get_enabled_product_types() {
74
                        return apply_filters(
160✔
75
                                'graphql_woocommerce_product_types',
160✔
76
                                [
160✔
77
                                        'simple'   => 'SimpleProduct',
160✔
78
                                        'variable' => 'VariableProduct',
160✔
79
                                        'external' => 'ExternalProduct',
160✔
80
                                        'grouped'  => 'GroupProduct',
160✔
81
                                ]
160✔
82
                        );
160✔
83
                }
84

85
                /**
86
                 * Returns WooCommerce product variation types to be exposed to the GraphQL schema.
87
                 *
88
                 * @return array
89
                 */
90
                public static function get_enabled_product_variation_types() {
91
                        return apply_filters( 'graphql_woocommerce_product_variation_types', [ 'variation' => 'SimpleProductVariation' ] );
20✔
92
                }
93

94
                /**
95
                 * Returns GraphQL Product Type name for product types not supported by the GraphQL schema.
96
                 *
97
                 * @return string
98
                 */
99
                public static function get_supported_product_type() {
100
                        return apply_filters(
1✔
101
                                'graphql_woocommerce_unsupported_product_type',
1✔
102
                                'UnsupportedProduct'
1✔
103
                        );
1✔
104
                }
105

106
                /**
107
                 * Returns WooCommerce product attribute taxonomies to be registered as
108
                 * "TermObject" types in the schema.
109
                 *
110
                 * @return array
111
                 */
112
                public static function get_product_attribute_taxonomies() {
113
                        $attribute_taxonomies = \wc_get_attribute_taxonomies();
155✔
114

115
                        // Get taxonomy names.
116
                        $attributes = [];
155✔
117
                        foreach ( $attribute_taxonomies as $tax ) {
155✔
118
                                $attributes[] = 'pa_' . $tax->attribute_name;
155✔
119
                        }
120

121
                        /**
122
                         * Filter the $attributes to allow the removal or addition of product attribute taxonomies
123
                         *
124
                         * @param array $attributes Product attributes being passed.
125
                         */
126
                        return apply_filters(
155✔
127
                                'graphql_woocommerce_product_attributes_taxonomies',
155✔
128
                                $attributes
155✔
129
                        );
155✔
130
                }
131

132
                /**
133
                 * Throw error on object clone.
134
                 * The whole idea of the singleton design pattern is that there is a single object
135
                 * therefore, we don't want the object to be cloned.
136
                 *
137
                 * @since  0.0.1
138
                 */
139
                public function __clone() {
140
                        // Cloning instances of the class is forbidden.
141
                        _doing_it_wrong( __FUNCTION__, esc_html__( 'WP_GraphQL_WooCommerce class should not be cloned.', 'wp-graphql-woocommerce' ), '0.0.1' );
×
142
                }
143

144
                /**
145
                 * Disable unserializing of the class.
146
                 *
147
                 * @since  0.0.1
148
                 */
149
                public function __wakeup() {
150
                        // De-serializing instances of the class is forbidden.
151
                        _doing_it_wrong( __FUNCTION__, esc_html__( 'De-serializing instances of the WP_GraphQL_WooCommerce class is not allowed', 'wp-graphql-woocommerce' ), '0.0.1' );
×
152
                }
153

154
                /**
155
                 * Include required files.
156
                 * Uses composer's autoload
157
                 *
158
                 * @since  0.0.1
159
                 * @return void
160
                 */
161
                private function includes() {
162
                        $include_directory_path = get_includes_directory();
×
163

164
                        // Include util class files.
165
                        require $include_directory_path . 'utils/class-ql-session-handler.php';
×
166
                        require $include_directory_path . 'utils/class-session-transaction-manager.php';
×
167

168
                        // Include models class files.
169
                        require $include_directory_path . 'model/class-customer.php';
×
170
                        require $include_directory_path . 'model/class-wc-post.php';
×
171
                        require $include_directory_path . 'model/class-coupon.php';
×
172
                        require $include_directory_path . 'model/class-product.php';
×
173
                        require $include_directory_path . 'model/class-product-variation.php';
×
174
                        require $include_directory_path . 'model/class-order.php';
×
175
                        require $include_directory_path . 'model/class-order-item.php';
×
176
                        require $include_directory_path . 'model/class-shipping-method.php';
×
177
                        require $include_directory_path . 'model/class-shipping-zone.php';
×
178
                        require $include_directory_path . 'model/class-tax-rate.php';
×
179

180
                        // Include data loaders class files.
181
                        require $include_directory_path . 'data/loader/class-wc-cpt-loader.php';
×
182
                        require $include_directory_path . 'data/loader/class-wc-customer-loader.php';
×
183
                        require $include_directory_path . 'data/loader/class-wc-db-loader.php';
×
184
                        require $include_directory_path . 'data/loader/class-wc-cart-item-loader.php';
×
185
                        require $include_directory_path . 'data/loader/class-wc-downloadable-item-loader.php';
×
186
                        require $include_directory_path . 'data/loader/class-wc-order-item-loader.php';
×
187
                        require $include_directory_path . 'data/loader/class-wc-shipping-method-loader.php';
×
188
                        require $include_directory_path . 'data/loader/class-wc-shipping-zone-loader.php';
×
189
                        require $include_directory_path . 'data/loader/class-wc-tax-class-loader.php';
×
190
                        require $include_directory_path . 'data/loader/class-wc-tax-rate-loader.php';
×
191

192
                        // Include connection resolver trait/class files.
193
                        require $include_directory_path . 'data/connection/trait-wc-db-loader-common.php';
×
194
                        require $include_directory_path . 'data/connection/trait-wc-cpt-loader-common.php';
×
195
                        require $include_directory_path . 'data/connection/class-cart-item-connection-resolver.php';
×
196
                        require $include_directory_path . 'data/connection/class-downloadable-item-connection-resolver.php';
×
197
                        require $include_directory_path . 'data/connection/class-order-connection-resolver.php';
×
198
                        require $include_directory_path . 'data/connection/class-order-item-connection-resolver.php';
×
199
                        require $include_directory_path . 'data/connection/class-payment-gateway-connection-resolver.php';
×
200
                        require $include_directory_path . 'data/connection/class-product-attribute-connection-resolver.php';
×
201
                        require $include_directory_path . 'data/connection/class-product-connection-resolver.php';
×
202
                        require $include_directory_path . 'data/connection/class-shipping-method-connection-resolver.php';
×
203
                        require $include_directory_path . 'data/connection/class-shipping-zone-connection-resolver.php';
×
204
                        require $include_directory_path . 'data/connection/class-tax-class-connection-resolver.php';
×
205
                        require $include_directory_path . 'data/connection/class-tax-rate-connection-resolver.php';
×
206
                        require $include_directory_path . 'data/connection/class-variation-attribute-connection-resolver.php';
×
207

208
                        // Include deprecated resolver trait/class files.
209
                        require $include_directory_path . 'data/connection/class-coupon-connection-resolver.php';
×
210
                        require $include_directory_path . 'data/connection/class-customer-connection-resolver.php';
×
211

212
                        // Include mutation processor class files.
213
                        require $include_directory_path . 'data/mutation/class-cart-mutation.php';
×
214
                        require $include_directory_path . 'data/mutation/class-checkout-mutation.php';
×
215
                        require $include_directory_path . 'data/mutation/class-coupon-mutation.php';
×
216
                        require $include_directory_path . 'data/mutation/class-customer-mutation.php';
×
217
                        require $include_directory_path . 'data/mutation/class-order-mutation.php';
×
218
                        require $include_directory_path . 'data/mutation/class-shipping-mutation.php';
×
219
                        require $include_directory_path . 'data/mutation/class-settings-mutation.php';
×
220

221
                        // Include factory class file.
222
                        require $include_directory_path . 'data/class-factory.php';
×
223

224
                        // Include DB hooks class files.
225
                        require $include_directory_path . 'data/cursor/class-cot-cursor.php';
×
226
                        require $include_directory_path . 'data/class-db-hooks.php';
×
227

228
                        // Include enum type class files.
229
                        require $include_directory_path . 'type/enum/class-backorders.php';
×
230
                        require $include_directory_path . 'type/enum/class-cart-error-type.php';
×
231
                        require $include_directory_path . 'type/enum/class-catalog-visibility.php';
×
232
                        require $include_directory_path . 'type/enum/class-countries.php';
×
233
                        require $include_directory_path . 'type/enum/class-customer-connection-orderby-enum.php';
×
234
                        require $include_directory_path . 'type/enum/class-discount-type.php';
×
235
                        require $include_directory_path . 'type/enum/class-id-type-enums.php';
×
236
                        require $include_directory_path . 'type/enum/class-manage-stock.php';
×
237
                        require $include_directory_path . 'type/enum/class-order-status.php';
×
238
                        require $include_directory_path . 'type/enum/class-post-type-orderby-enum.php';
×
239
                        require $include_directory_path . 'type/enum/class-orders-orderby-enum.php';
×
240
                        require $include_directory_path . 'type/enum/class-products-orderby-enum.php';
×
241
                        require $include_directory_path . 'type/enum/class-pricing-field-format.php';
×
242
                        require $include_directory_path . 'type/enum/class-product-attribute-types.php';
×
243
                        require $include_directory_path . 'type/enum/class-product-category-display.php';
×
244
                        require $include_directory_path . 'type/enum/class-product-taxonomy.php';
×
245
                        require $include_directory_path . 'type/enum/class-product-types.php';
×
246
                        require $include_directory_path . 'type/enum/class-stock-status.php';
×
247
                        require $include_directory_path . 'type/enum/class-tax-class.php';
×
248
                        require $include_directory_path . 'type/enum/class-tax-rate-connection-orderby-enum.php';
×
249
                        require $include_directory_path . 'type/enum/class-tax-status.php';
×
250
                        require $include_directory_path . 'type/enum/class-taxonomy-operator.php';
×
251
                        require $include_directory_path . 'type/enum/class-attribute-operator-enum.php';
×
252
                        require $include_directory_path . 'type/enum/class-product-attribute-enum.php';
×
253
                        require $include_directory_path . 'type/enum/class-currency-enum.php';
×
254
                        require $include_directory_path . 'type/enum/class-shipping-location-type-enum.php';
×
255
                        require $include_directory_path . 'type/enum/class-wc-setting-type-enum.php';
×
256
                        require $include_directory_path . 'type/enum/class-product-attributes-connection-orderby-enum.php';
×
257

258
                        // Include interface type class files.
259
                        require $include_directory_path . 'type/interface/class-attribute.php';
×
260
                        require $include_directory_path . 'type/interface/class-cart-error.php';
×
261
                        require $include_directory_path . 'type/interface/class-product-attribute.php';
×
262
                        require $include_directory_path . 'type/interface/class-product.php';
×
263
                        require $include_directory_path . 'type/interface/class-product-variation.php';
×
264
                        require $include_directory_path . 'type/interface/class-payment-token-interface.php';
×
265
                        require $include_directory_path . 'type/interface/class-product-union.php';
×
266
                        require $include_directory_path . 'type/interface/class-cart-item.php';
×
267
                        require $include_directory_path . 'type/interface/class-downloadable-product.php';
×
268
                        require $include_directory_path . 'type/interface/class-inventoried-product.php';
×
269
                        require $include_directory_path . 'type/interface/class-product-with-dimensions.php';
×
270
                        require $include_directory_path . 'type/interface/class-product-with-pricing.php';
×
271
                        require $include_directory_path . 'type/interface/class-product-with-variations.php';
×
272
                        require $include_directory_path . 'type/interface/class-product-with-attributes.php';
×
273

274
                        // Include object type class files.
275
                        require $include_directory_path . 'type/object/class-cart-error-types.php';
×
276
                        require $include_directory_path . 'type/object/class-cart-type.php';
×
277
                        require $include_directory_path . 'type/object/class-coupon-type.php';
×
278
                        require $include_directory_path . 'type/object/class-customer-address-type.php';
×
279
                        require $include_directory_path . 'type/object/class-customer-type.php';
×
280
                        require $include_directory_path . 'type/object/class-downloadable-item-type.php';
×
281
                        require $include_directory_path . 'type/object/class-meta-data-type.php';
×
282
                        require $include_directory_path . 'type/object/class-order-item-type.php';
×
283
                        require $include_directory_path . 'type/object/class-order-type.php';
×
284
                        require $include_directory_path . 'type/object/class-order-note-type.php';
×
285
                        require $include_directory_path . 'type/object/class-payment-gateway-type.php';
×
286
                        require $include_directory_path . 'type/object/class-product-attribute-types.php';
×
287
                        require $include_directory_path . 'type/object/class-product-category-type.php';
×
288
                        require $include_directory_path . 'type/object/class-product-download-type.php';
×
289
                        require $include_directory_path . 'type/object/class-product-types.php';
×
290
                        require $include_directory_path . 'type/object/class-refund-type.php';
×
291
                        require $include_directory_path . 'type/object/class-root-query.php';
×
292
                        require $include_directory_path . 'type/object/class-shipping-method-type.php';
×
293
                        require $include_directory_path . 'type/object/class-shipping-package-type.php';
×
294
                        require $include_directory_path . 'type/object/class-shipping-rate-type.php';
×
295
                        require $include_directory_path . 'type/object/class-simple-attribute-type.php';
×
296
                        require $include_directory_path . 'type/object/class-tax-rate-type.php';
×
297
                        require $include_directory_path . 'type/object/class-variation-attribute-type.php';
×
298
                        require $include_directory_path . 'type/object/class-payment-token-types.php';
×
299
                        require $include_directory_path . 'type/object/class-country-state-type.php';
×
300
                        require $include_directory_path . 'type/object/class-collection-stats-type.php';
×
301
                        require $include_directory_path . 'type/object/class-shipping-location-type.php';
×
302
                        require $include_directory_path . 'type/object/class-shipping-zone-type.php';
×
303
                        require $include_directory_path . 'type/object/class-tax-class-type.php';
×
304
                        require $include_directory_path . 'type/object/class-wc-setting-type.php';
×
305

306
                        // Include input type class files.
307
                        require $include_directory_path . 'type/input/class-cart-item-input.php';
×
308
                        require $include_directory_path . 'type/input/class-cart-item-quantity-input.php';
×
309
                        require $include_directory_path . 'type/input/class-create-account-input.php';
×
310
                        require $include_directory_path . 'type/input/class-customer-address-input.php';
×
NEW
311
                        require $include_directory_path . 'type/input/class-fee-input.php';
×
312
                        require $include_directory_path . 'type/input/class-fee-line-input.php';
×
313
                        require $include_directory_path . 'type/input/class-line-item-input.php';
×
314
                        require $include_directory_path . 'type/input/class-meta-data-input.php';
×
315
                        require $include_directory_path . 'type/input/class-orderby-inputs.php';
×
316
                        require $include_directory_path . 'type/input/class-product-attribute-input.php';
×
317
                        require $include_directory_path . 'type/input/class-product-taxonomy-filter-input.php';
×
318
                        require $include_directory_path . 'type/input/class-product-taxonomy-input.php';
×
319
                        require $include_directory_path . 'type/input/class-shipping-line-input.php';
×
320
                        require $include_directory_path . 'type/input/class-tax-rate-connection-orderby-input.php';
×
321
                        require $include_directory_path . 'type/input/class-collection-stats-query-input.php';
×
322
                        require $include_directory_path . 'type/input/class-collection-stats-where-args.php';
×
323
                        require $include_directory_path . 'type/input/class-product-attribute-filter-input.php';
×
324
                        require $include_directory_path . 'type/input/class-product-attribute-query-input.php';
×
325
                        require $include_directory_path . 'type/input/class-shipping-location-input.php';
×
326
                        require $include_directory_path . 'type/input/class-wc-setting-input.php';
×
327

328
                        // Include mutation type class files.
329
                        require $include_directory_path . 'mutation/class-cart-add-fee.php';
×
330
                        require $include_directory_path . 'mutation/class-cart-add-item.php';
×
331
                        require $include_directory_path . 'mutation/class-cart-add-items.php';
×
332
                        require $include_directory_path . 'mutation/class-cart-apply-coupon.php';
×
333
                        require $include_directory_path . 'mutation/class-cart-empty.php';
×
334
                        require $include_directory_path . 'mutation/class-cart-fill.php';
×
335
                        require $include_directory_path . 'mutation/class-cart-remove-coupons.php';
×
336
                        require $include_directory_path . 'mutation/class-cart-remove-items.php';
×
337
                        require $include_directory_path . 'mutation/class-cart-restore-items.php';
×
338
                        require $include_directory_path . 'mutation/class-cart-update-item-quantities.php';
×
339
                        require $include_directory_path . 'mutation/class-cart-update-shipping-method.php';
×
340
                        require $include_directory_path . 'mutation/class-checkout.php';
×
341
                        require $include_directory_path . 'mutation/class-coupon-create.php';
×
342
                        require $include_directory_path . 'mutation/class-coupon-delete.php';
×
343
                        require $include_directory_path . 'mutation/class-coupon-update.php';
×
344
                        require $include_directory_path . 'mutation/class-customer-register.php';
×
345
                        require $include_directory_path . 'mutation/class-customer-update.php';
×
346
                        require $include_directory_path . 'mutation/class-order-create.php';
×
347
                        require $include_directory_path . 'mutation/class-order-delete-items.php';
×
348
                        require $include_directory_path . 'mutation/class-order-delete.php';
×
349
                        require $include_directory_path . 'mutation/class-order-note-create.php';
×
350
                        require $include_directory_path . 'mutation/class-order-note-delete.php';
×
351
                        require $include_directory_path . 'mutation/class-order-update.php';
×
352
                        require $include_directory_path . 'mutation/class-review-write.php';
×
353
                        require $include_directory_path . 'mutation/class-review-delete-restore.php';
×
354
                        require $include_directory_path . 'mutation/class-review-update.php';
×
355
                        require $include_directory_path . 'mutation/class-payment-method-delete.php';
×
356
                        require $include_directory_path . 'mutation/class-payment-method-set-default.php';
×
357
                        require $include_directory_path . 'mutation/class-session-delete.php';
×
358
                        require $include_directory_path . 'mutation/class-session-update.php';
×
359
                        require $include_directory_path . 'mutation/class-shipping-zone-create.php';
×
360
                        require $include_directory_path . 'mutation/class-shipping-zone-delete.php';
×
361
                        require $include_directory_path . 'mutation/class-shipping-zone-locations-clear.php';
×
362
                        require $include_directory_path . 'mutation/class-shipping-zone-locations-update.php';
×
363
                        require $include_directory_path . 'mutation/class-shipping-zone-method-add.php';
×
364
                        require $include_directory_path . 'mutation/class-shipping-zone-method-remove.php';
×
365
                        require $include_directory_path . 'mutation/class-shipping-zone-method-update.php';
×
366
                        require $include_directory_path . 'mutation/class-shipping-zone-update.php';
×
367
                        require $include_directory_path . 'mutation/class-tax-class-create.php';
×
368
                        require $include_directory_path . 'mutation/class-tax-class-delete.php';
×
369
                        require $include_directory_path . 'mutation/class-tax-rate-create.php';
×
370
                        require $include_directory_path . 'mutation/class-tax-rate-delete.php';
×
371
                        require $include_directory_path . 'mutation/class-tax-rate-update.php';
×
372

373
                        // Include connection class/function files.
374
                        require $include_directory_path . 'connection/wc-cpt-connection-args.php';
×
375
                        require $include_directory_path . 'connection/class-comments.php';
×
376
                        require $include_directory_path . 'connection/class-coupons.php';
×
377
                        require $include_directory_path . 'connection/class-customers.php';
×
378
                        require $include_directory_path . 'connection/class-orders.php';
×
379
                        require $include_directory_path . 'connection/class-payment-gateways.php';
×
380
                        require $include_directory_path . 'connection/class-posts.php';
×
381
                        require $include_directory_path . 'connection/class-product-attributes.php';
×
382
                        require $include_directory_path . 'connection/class-products.php';
×
383
                        require $include_directory_path . 'connection/class-shipping-methods.php';
×
384
                        require $include_directory_path . 'connection/class-shipping-zones.php';
×
385
                        require $include_directory_path . 'connection/class-tax-classes.php';
×
386
                        require $include_directory_path . 'connection/class-tax-rates.php';
×
387
                        require $include_directory_path . 'connection/class-wc-terms.php';
×
388

389
                        // Include admin files.
390
                        require $include_directory_path . 'admin/class-section.php';
×
391
                        require $include_directory_path . 'admin/class-general.php';
×
392

393
                        // Include main plugin class files.
394
                        require $include_directory_path . 'class-admin.php';
×
395
                        require $include_directory_path . 'class-core-schema-filters.php';
×
396
                        require $include_directory_path . 'class-jwt-auth-schema-filters.php';
×
397
                        require $include_directory_path . 'class-woocommerce-filters.php';
×
398
                        require $include_directory_path . 'class-acf-schema-filters.php';
×
399
                        require $include_directory_path . 'class-type-registry.php';
×
400

401
                        // Required extra plugin function file.
402
                        require $include_directory_path . 'functions.php';
×
403

404
                        /**
405
                         * WPGRAPHQL_WOOCOMMERCE_AUTOLOAD can be set to "false" to prevent the autoloader from running.
406
                         * In most cases, this is not something that should be disabled, but some environments
407
                         * may bootstrap their dependencies in a global autoloader that will autoload files
408
                         * before we get to this point, and requiring the autoloader again can trigger fatal errors.
409
                         *
410
                         * The codeception tests are an example of an environment where adding the autoloader again causes issues
411
                         * so this is set to false for tests.
412
                         */
413
                        if ( defined( 'WPGRAPHQL_WOOCOMMERCE_AUTOLOAD' ) && true === WPGRAPHQL_WOOCOMMERCE_AUTOLOAD ) {
×
414
                                if ( file_exists( get_vendor_directory() . 'autoload.php' ) ) {
×
415
                                        // Autoload Required Classes.
416
                                        require_once get_vendor_directory() . 'autoload.php';
×
417
                                }
418

419
                                /**
420
                                 * If GraphQL class doesn't exist, then dependencies cannot be
421
                                 * detected. This likely means the user cloned the repo from Github
422
                                 * but did not run `composer install`
423
                                 */
424
                                if ( ! class_exists( 'WPGraphQL\WooCommerce\Vendor\Firebase\JWT\JWT' ) ) {
×
425
                                        add_action(
×
426
                                                'admin_notices',
×
427
                                                static function () {
×
428
                                                        if ( ! current_user_can( 'manage_options' ) ) {
×
429
                                                                return;
×
430
                                                        }
431

432
                                                        printf(
×
433
                                                                '<div class="notice notice-error">' .
×
434
                                                                '<p>%s</p>' .
×
435
                                                                '</div>',
×
436
                                                                esc_html__(
×
437
                                                                        'WPGraphQL for WooCommerce appears to have been installed without it\'s dependencies. It will not work properly until dependencies are installed. This likely means you have cloned WPGraphQL from Github and need to run the command `composer install`.',
×
438
                                                                        'wp-graphql-woocommerce'
×
439
                                                                )
×
440
                                                        );
×
441
                                                }
×
442
                                        );
×
443
                                }
444
                        }//end if
445
                }
446

447
                /**
448
                 * Returns true if any authorizing urls are enabled.
449
                 *
450
                 * @return array
451
                 */
452
                public static function get_enabled_auth_urls() {
453
                        return woographql_setting( 'enable_authorizing_url_fields', [] );
×
454
                }
455

456
                /**
457
                 * Returns true if any authorizing urls are enabled.
458
                 *
459
                 * @return bool
460
                 */
461
                public static function auth_router_is_enabled() {
462
                        return defined( 'WPGRAPHQL_WOOCOMMERCE_ENABLE_AUTH_URLS' )
11✔
463
                                || ! empty( self::get_enabled_auth_urls() );
11✔
464
                }
465

466
                /**
467
                 * Import and setups Protected_Router class instance.
468
                 *
469
                 * @return void
470
                 */
471
                public static function load_auth_router() {
472
                        require get_includes_directory() . 'utils/class-protected-router.php';
×
473
                        add_action( 'after_setup_theme', [ Utils\Protected_Router::class, 'initialize' ] );
×
474
                }
475

476
                /**
477
                 * Sets up WPGraphQL for WooCommerce schema.
478
                 *
479
                 * @return void
480
                 */
481
                private function setup() {
482
                        // Initialize WPGraphQL for WooCommerce Settings.
483
                        new Admin();
×
484

485
                        // Initialize WPGraphQL for WooCommerce DB hooks.
486
                        new Data\DB_Hooks();
×
487

488
                        // Setup minor integrations.
489
                        Functions\setup_minor_integrations();
×
490

491
                        // Register WooCommerce filters.
492
                        WooCommerce_Filters::setup();
×
493

494
                        // Register WPGraphQL core filters.
495
                        Core_Schema_Filters::add_filters();
×
496

497
                        // Register WPGraphQL ACF filters.
498
                        ACF_Schema_Filters::add_filters();
×
499

500
                        // Register WPGraphQL JWT Authentication filters.
501
                        JWT_Auth_Schema_Filters::add_filters();
×
502

503
                        // Initialize WPGraphQL for WooCommerce TypeRegistry.
504
                        $registry = new Type_Registry();
×
505
                        add_action( 'graphql_register_types', [ $registry, 'init' ] );
×
506
                }
507
        }
508

509
endif;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc