question. * @param string $second_question The text for the second question. * * @return string Generated JavaScript to append to page. */ private function get_script_track_edit_php( $action, $title, $first_question, $second_question ) { return sprintf( "(function( $ ) { 'use strict'; // Hook on submit button and sets a 500ms interval function // to determine successful add tag or otherwise. $('#addtag #submit').on( 'click', function() { const initialCount = $('.tags tbody > tr').length; const interval = setInterval( function() { if ( $('.tags tbody > tr').length > initialCount ) { // New tag detected. clearInterval( interval ); wp.data.dispatch('wc/customer-effort-score').addCesSurvey({ action: '%s', title: '%s', firstQuestion: '%s', secondQuestion: '%s', onsubmitLabel: '%s' }); } else { // Form is no longer loading, most likely failed. if ( $( '#addtag .submit .spinner.is-active' ).length < 1 ) { clearInterval( interval ); } } }, 500 ); }); })( jQuery );", esc_js( $action ), esc_js( $title ), esc_js( $first_question ), esc_js( $second_question ), esc_js( $this->onsubmit_label ) ); } /** * Get the current published product count. * * @return integer The current published product count. */ private function get_product_count() { $query = new \WC_Product_Query( array( 'limit' => 1, 'paginate' => true, 'return' => 'ids', 'status' => array( 'publish' ), ) ); $products = $query->get_products(); $product_count = intval( $products->total ); return $product_count; } /** * Get the current shop order count. * * @return integer The current shop order count. */ private function get_shop_order_count() { $query = new \WC_Order_Query( array( 'limit' => 1, 'paginate' => true, 'return' => 'ids', ) ); $shop_orders = $query->get_orders(); $shop_order_count = intval( $shop_orders->total ); return $shop_order_count; } /** * Return whether the action has already been shown. * * @param string $action The action to check. * * @return bool Whether the action has already been shown. */ private function has_been_shown( $action ) { $shown_for_features = get_option( self::SHOWN_FOR_ACTIONS_OPTION_NAME, array() ); $has_been_shown = in_array( $action, $shown_for_features, true ); return $has_been_shown; } /** * Enqueue the item to the CES tracks queue. * * @param array $item The item to enqueue. */ private function enqueue_to_ces_tracks( $item ) { $queue = get_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array() ); $has_duplicate = array_filter( $queue, function ( $queue_item ) use ( $item ) { return $queue_item['action'] === $item['action']; } ); if ( $has_duplicate ) { return; } $queue[] = $item; update_option( self::CES_TRACKS_QUEUE_OPTION_NAME, $queue ); } /** * Enqueue the CES survey on using search dynamically. * * @param string $search_area Search area such as "product" or "shop_order". * @param string $page_now Value of window.pagenow. * @param string $admin_page Value of window.adminpage. */ public function enqueue_ces_survey_for_search( $search_area, $page_now, $admin_page ) { if ( $this->has_been_shown( self::SEARCH_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::SEARCH_ACTION_NAME, 'title' => __( 'How easy was it to use search?', 'woocommerce' ), 'firstQuestion' => __( 'The search feature in WooCommerce is easy to use.', 'woocommerce' ), 'secondQuestion' => __( 'The search\'s functionality meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => $page_now, 'adminpage' => $admin_page, 'props' => (object) array( 'search_area' => $search_area, ), ) ); } /** * Hook into the post status lifecycle, to detect relevant user actions * that we want to survey about. * * @param string $new_status The new status. * @param string $old_status The old status. * @param Post $post The post. */ public function run_on_transition_post_status( $new_status, $old_status, $post ) { if ( 'product' === $post->post_type ) { $this->maybe_enqueue_ces_survey_for_product( $new_status, $old_status ); } elseif ( 'shop_order' === $post->post_type ) { $this->enqueue_ces_survey_for_edited_shop_order(); } } /** * Maybe enqueue the CES survey, if product is being added or edited. * * @param string $new_status The new status. * @param string $old_status The old status. */ private function maybe_enqueue_ces_survey_for_product( $new_status, $old_status ) { if ( 'publish' !== $new_status ) { return; } if ( 'publish' !== $old_status ) { $this->enqueue_ces_survey_for_new_product(); } else { $this->enqueue_ces_survey_for_edited_product(); } } /** * Enqueue the CES survey trigger for a new product. */ private function enqueue_ces_survey_for_new_product() { if ( $this->has_been_shown( self::PRODUCT_ADD_PUBLISH_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::PRODUCT_ADD_PUBLISH_ACTION_NAME, 'title' => __( 'How easy was it to add a product?', 'woocommerce' ), 'firstQuestion' => __( 'The product creation screen is easy to use.', 'woocommerce' ), 'secondQuestion' => __( 'The product creation screen\'s functionality meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'product', 'adminpage' => 'post-php', 'props' => array( 'product_count' => $this->get_product_count(), ), ) ); } /** * Enqueue the CES survey trigger for an existing product. */ private function enqueue_ces_survey_for_edited_product() { if ( $this->has_been_shown( self::PRODUCT_UPDATE_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::PRODUCT_UPDATE_ACTION_NAME, 'title' => __( 'How easy was it to edit your product?', 'woocommerce' ), 'firstQuestion' => __( 'The product update process is easy to complete.', 'woocommerce' ), 'secondQuestion' => __( 'The product update process meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'product', 'adminpage' => 'post-php', 'props' => array( 'product_count' => $this->get_product_count(), ), ) ); } /** * Enqueue the CES survey trigger for an existing shop order. */ private function enqueue_ces_survey_for_edited_shop_order() { if ( $this->has_been_shown( self::SHOP_ORDER_UPDATE_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::SHOP_ORDER_UPDATE_ACTION_NAME, 'title' => __( 'How easy was it to update an order?', 'woocommerce' ), 'firstQuestion' => __( 'The order details screen is easy to use.', 'woocommerce' ), 'secondQuestion' => __( 'The order details screen\'s functionality meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'shop_order', 'adminpage' => 'post-php', 'props' => array( 'order_count' => $this->get_shop_order_count(), ), ) ); } /** * Maybe clear the CES tracks queue, executed on every page load. If the * clear option is set it clears the queue. In practice, this executes a * page load after the queued CES tracks are displayed on the client, which * sets the clear option. */ public function maybe_clear_ces_tracks_queue() { $clear_ces_tracks_queue_for_page = get_option( self::CLEAR_CES_TRACKS_QUEUE_FOR_PAGE_OPTION_NAME, false ); if ( ! $clear_ces_tracks_queue_for_page ) { return; } $queue = get_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array() ); $remaining_items = array_filter( $queue, function ( $item ) use ( $clear_ces_tracks_queue_for_page ) { return $clear_ces_tracks_queue_for_page['pagenow'] !== $item['pagenow'] || $clear_ces_tracks_queue_for_page['adminpage'] !== $item['adminpage']; } ); update_option( self::CES_TRACKS_QUEUE_OPTION_NAME, array_values( $remaining_items ) ); update_option( self::CLEAR_CES_TRACKS_QUEUE_FOR_PAGE_OPTION_NAME, false ); } /** * Appends a script to footer to trigger CES on adding product categories. */ public function add_script_track_product_categories() { if ( $this->has_been_shown( self::ADD_PRODUCT_CATEGORIES_ACTION_NAME ) ) { return; } wc_enqueue_js( $this->get_script_track_edit_php( self::ADD_PRODUCT_CATEGORIES_ACTION_NAME, __( 'How easy was it to add product category?', 'woocommerce' ), __( 'The product category details screen is easy to use.', 'woocommerce' ), __( "The product category details screen's functionality meets my needs.", 'woocommerce' ) ) ); } /** * Appends a script to footer to trigger CES on adding product tags. */ public function add_script_track_product_tags() { if ( $this->has_been_shown( self::ADD_PRODUCT_TAGS_ACTION_NAME ) ) { return; } wc_enqueue_js( $this->get_script_track_edit_php( self::ADD_PRODUCT_TAGS_ACTION_NAME, __( 'How easy was it to add a product tag?', 'woocommerce' ), __( 'The product tag details screen is easy to use.', 'woocommerce' ), __( "The product tag details screen's functionality meets my needs.", 'woocommerce' ) ) ); } /** * Maybe enqueue the CES survey on product import, if step is done. */ public function run_on_product_import() { // We're only interested in when the importer completes. if ( empty( $_GET['step'] ) || 'done' !== $_GET['step'] ) { // phpcs:ignore CSRF ok. return; } if ( $this->has_been_shown( self::IMPORT_PRODUCTS_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::IMPORT_PRODUCTS_ACTION_NAME, 'title' => __( 'How easy was it to import products?', 'woocommerce' ), 'firstQuestion' => __( 'The product import process is easy to complete.', 'woocommerce' ), 'secondQuestion' => __( 'The product import process meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'product_page_product_importer', 'adminpage' => 'product_page_product_importer', 'props' => (object) array(), ) ); } /** * Enqueue the CES survey trigger for setting changes. */ public function run_on_update_options() { // $current_tab is set when WC_Admin_Settings::save_settings is called. global $current_tab; global $current_section; if ( $this->has_been_shown( self::SETTINGS_CHANGE_ACTION_NAME ) ) { return; } $props = array( 'settings_area' => $current_tab, ); if ( $current_section ) { $props['settings_section'] = $current_section; } $this->enqueue_to_ces_tracks( array( 'action' => self::SETTINGS_CHANGE_ACTION_NAME, 'title' => __( 'How easy was it to update your settings?', 'woocommerce' ), 'firstQuestion' => __( 'The settings screen is easy to use.', 'woocommerce' ), 'secondQuestion' => __( 'The settings screen\'s functionality meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'woocommerce_page_wc-settings', 'adminpage' => 'woocommerce_page_wc-settings', 'props' => (object) $props, ) ); } /** * Enqueue the CES survey on adding new product attributes. */ public function run_on_add_product_attributes() { if ( $this->has_been_shown( self::ADD_PRODUCT_ATTRIBUTES_ACTION_NAME ) ) { return; } $this->enqueue_to_ces_tracks( array( 'action' => self::ADD_PRODUCT_ATTRIBUTES_ACTION_NAME, 'title' => __( 'How easy was it to add a product attribute?', 'woocommerce' ), 'firstQuestion' => __( 'Product attributes are easy to use.', 'woocommerce' ), 'secondQuestion' => __( 'Product attributes\' functionality meets my needs.', 'woocommerce' ), 'onsubmit_label' => $this->onsubmit_label, 'pagenow' => 'product_page_product_attributes', 'adminpage' => 'product_page_product_attributes', 'props' => (object) array(), ) ); } /** * Determine on initiating CES survey on searching for product or orders. */ public function run_on_load_edit_php() { $allowed_types = array( 'product', 'shop_order' ); $post_type = get_current_screen()->post_type; // We're only interested for certain post types. if ( ! in_array( $post_type, $allowed_types, true ) ) { return; } // Determine whether request is search by "s" GET parameter. if ( empty( $_GET['s'] ) ) { // phpcs:disable WordPress.Security.NonceVerification.Recommended return; } $page_now = 'edit-' . $post_type; $this->enqueue_ces_survey_for_search( $post_type, $page_now, 'edit-php' ); } }
Warning: Class "Automattic\WooCommerce\Internal\Admin\CustomerEffortScoreTracks" not found in /htdocs/wp-content/plugins/woocommerce/src/Admin/Features/Features.php on line 363
dmin_Settings::get_settings_pages(); $default_setting = isset( $setting_pages[0] ) ? $setting_pages[0]->get_id() : ''; $setting = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : $default_setting; /* phpcs:enable */ wp_safe_redirect( wc_admin_url( "&path=/settings/$setting" ) ); exit; } }
Warning: Class "Automattic\WooCommerce\Internal\Admin\SettingsNavigationFeature" not found in /htdocs/wp-content/plugins/woocommerce/src/Admin/Features/Features.php on line 363
eturn $types; } /** * Set the isBundle product attribute to 'true' if product is a bundle. * * @param WC_Product $product */ private function handle_update_product( WC_Product $product ) { if ( $product->is_type( 'bundle' ) ) { $this->attribute_manager->update( $product, new IsBundle( true ) ); } } /** * @param float $price Calculated price of the product * @param WC_Product $product WooCommerce product * @param bool $tax_excluded Whether tax is excluded from product price */ private function calculate_price( float $price, WC_Product $product, bool $tax_excluded ): float { if ( ! $product instanceof WC_Product_Bundle ) { return $price; } return $tax_excluded ? $product->get_bundle_regular_price_excluding_tax() : $product->get_bundle_regular_price_including_tax(); } /** * @param float $sale_price Calculated sale price of the product * @param WC_Product $product WooCommerce product * @param bool $tax_excluded Whether tax is excluded from product price */ private function calculate_sale_price( float $sale_price, WC_Product $product, bool $tax_excluded ): float { if ( ! $product instanceof WC_Product_Bundle ) { return $sale_price; } $regular_price = $tax_excluded ? $product->get_bundle_regular_price_excluding_tax() : $product->get_bundle_regular_price_including_tax(); $price = $tax_excluded ? $product->get_bundle_price_excluding_tax() : $product->get_bundle_price_including_tax(); // return current price as the sale price if it's lower than the regular price. if ( $price < $regular_price ) { return $price; } return $sale_price; } /** * @param bool $is_virtual Whether a product is virtual * @param WC_Product $product WooCommerce product */ private function is_virtual_bundle( bool $is_virtual, WC_Product $product ): bool { if ( $product instanceof WC_Product_Bundle && is_callable( [ $product, 'is_virtual_bundle' ] ) ) { return $product->is_virtual_bundle(); } return $is_virtual; } /** * Skip unsupported bundle products. * * @param WC_Product[] $products WooCommerce products */ private function get_sync_ready_bundle_products( array $products ): array { return array_filter( $products, function ( WC_Product $product ) { if ( $product instanceof WC_Product_Bundle && $product->requires_input() ) { return false; } return true; } ); } }
Warning: class_implements(): Class Automattic\WooCommerce\GoogleListingsAndAds\Integration\WooCommerceProductBundles does not exist and could not be loaded in /htdocs/wp-content/plugins/google-listings-and-ads/src/Internal/DependencyManagement/AbstractServiceProvider.php on line 73

Warning: foreach() argument must be of type array|object, bool given in /htdocs/wp-content/plugins/google-listings-and-ads/src/Internal/DependencyManagement/AbstractServiceProvider.php on line 73
available. * @param OnboardBuyOnGoogleProgramRequest $postBody * @param array $optParams Optional parameters. * @throws \Google\Service\Exception */ public function onboard($merchantId, $regionCode, OnboardBuyOnGoogleProgramRequest $postBody, $optParams = []) { $params = ['merchantId' => $merchantId, 'regionCode' => $regionCode, 'postBody' => $postBody]; $params = array_merge($params, $optParams); return $this->call('onboard', [$params]); } /** * Updates the status of the BoG program for your Merchant Center account. * (buyongoogleprograms.patch) * * @param string $merchantId Required. The ID of the account. * @param string $regionCode Required. The program region code [ISO 3166-1 * alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Currently only US * is available. * @param BuyOnGoogleProgramStatus $postBody * @param array $optParams Optional parameters. * * @opt_param string updateMask The list of fields to update. If the update mask * is not provided, then all the fields set in buyOnGoogleProgramStatus will be * updated. Clearing fields is only possible if update mask is provided. * @return BuyOnGoogleProgramStatus * @throws \Google\Service\Exception */ public function patch($merchantId, $regionCode, BuyOnGoogleProgramStatus $postBody, $optParams = []) { $params = ['merchantId' => $merchantId, 'regionCode' => $regionCode, 'postBody' => $postBody]; $params = array_merge($params, $optParams); return $this->call('patch', [$params], BuyOnGoogleProgramStatus::class); } /** * Pauses the BoG program in your Merchant Center account. This method is only * available to selected merchants. (buyongoogleprograms.pause) * * @param string $merchantId Required. The ID of the account. * @param string $regionCode Required. The program region code [ISO 3166-1 * alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Currently only US * is available. * @param PauseBuyOnGoogleProgramRequest $postBody * @param array $optParams Optional parameters. * @throws \Google\Service\Exception */ public function pause($merchantId, $regionCode, PauseBuyOnGoogleProgramRequest $postBody, $optParams = []) { $params = ['merchantId' => $merchantId, 'regionCode' => $regionCode, 'postBody' => $postBody]; $params = array_merge($params, $optParams); return $this->call('pause', [$params]); } /** * Requests review and then activates the BoG program in your Merchant Center * account for the first time. Moves the program to the REVIEW_PENDING state. * This method is only available to selected merchants. * (buyongoogleprograms.requestreview) * * @param string $merchantId Required. The ID of the account. * @param string $regionCode Required. The program region code [ISO 3166-1 * alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Currently only US * is available. * @param RequestReviewBuyOnGoogleProgramRequest $postBody * @param array $optParams Optional parameters. * @throws \Google\Service\Exception */ public function requestreview($merchantId, $regionCode, RequestReviewBuyOnGoogleProgramRequest $postBody, $optParams = []) { $params = ['merchantId' => $merchantId, 'regionCode' => $regionCode, 'postBody' => $postBody]; $params = array_merge($params, $optParams); return $this->call('requestreview', [$params]); } } // Adding a class alias for backwards compatibility with the previous class name. class_alias(Buyongoogleprograms::class, 'Google_Service_ShoppingContent_Resource_Buyongoogleprograms');
Fatal error: Uncaught Error: Class "Automattic\WooCommerce\GoogleListingsAndAds\Vendor\Google\Service\ShoppingContent\Resource\Buyongoogleprograms" not found in /htdocs/wp-content/plugins/google-listings-and-ads/vendor/google/apiclient-services/src/ShoppingContent.php:586 Stack trace: #0 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\Google\Service\ShoppingContent->__construct(Object(Automattic\WooCommerce\GoogleListingsAndAds\Vendor\Google\Client), 'https://api.woo...') #1 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(256): ReflectionClass->newInstanceArgs(Array) #2 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #3 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(94): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #4 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(157): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolve('Automattic\\WooC...', false) #5 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #6 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #7 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #8 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(253): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #9 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #10 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(94): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #11 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(157): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolve('Automattic\\WooC...', false) #12 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #13 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #14 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #15 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(253): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #16 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #17 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(94): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #18 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(157): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolve('Automattic\\WooC...', false) #19 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #20 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #21 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #22 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(253): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #23 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #24 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(106): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #25 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(162): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolveTagged('Automattic\\WooC...', false) #26 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #27 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #28 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #29 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(253): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #30 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #31 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(94): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #32 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(157): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolve('Automattic\\WooC...', false) #33 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #34 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #35 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #36 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(253): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #37 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(212): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveClass('Automattic\\WooC...') #38 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(106): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #39 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(162): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolveTagged('Automattic\\WooC...', false) #40 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(45): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #41 [internal function]: Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Argument\{closure}('Automattic\\WooC...') #42 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Argument/ArgumentResolverTrait.php(19): array_map(Object(Closure), Array) #43 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(237): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveArguments(Array) #44 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/Definition.php(198): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolveCallable(Object(Closure)) #45 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Definition/DefinitionAggregate.php(106): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\Definition->resolve(false) #46 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(162): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Definition\DefinitionAggregate->resolveTagged('Automattic\\WooC...', false) #47 /htdocs/wp-content/plugins/google-listings-and-ads/vendor/league/container/src/Container.php(178): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...', false) #48 /htdocs/wp-content/plugins/google-listings-and-ads/src/Container.php(90): Automattic\WooCommerce\GoogleListingsAndAds\Vendor\League\Container\Container->get('Automattic\\WooC...') #49 /htdocs/wp-content/plugins/google-listings-and-ads/src/Infrastructure/GoogleListingsAndAdsPlugin.php(130): Automattic\WooCommerce\GoogleListingsAndAds\Container->get('Automattic\\WooC...') #50 /htdocs/wp-content/plugins/google-listings-and-ads/src/Infrastructure/GoogleListingsAndAdsPlugin.php(91): Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\GoogleListingsAndAdsPlugin->maybe_register_services() #51 /htdocs/wp-includes/class-wp-hook.php(324): Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\GoogleListingsAndAdsPlugin->Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\{closure}('') #52 /htdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #53 /htdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #54 /htdocs/wp-settings.php(578): do_action('plugins_loaded') #55 /htdocs/wp-config.php(85): require_once('/htdocs/wp-sett...') #56 /htdocs/wp-load.php(50): require_once('/htdocs/wp-conf...') #57 /htdocs/wp-blog-header.php(13): require_once('/htdocs/wp-load...') #58 /htdocs/index.php(17): require('/htdocs/wp-blog...') #59 {main} thrown in /htdocs/wp-content/plugins/google-listings-and-ads/vendor/google/apiclient-services/src/ShoppingContent.php on line 586