woocommerce / woocommerce

A customizable, open-source ecommerce platform built on WordPress. Build any commerce solution you can imagine.
https://woocommerce.com
9.33k stars 10.75k forks source link

Remote Inbox Notifications rules is matching on system status url rather than the siteurl #38167

Closed pierorocca closed 1 year ago

pierorocca commented 1 year ago

Prerequisites

Describe the bug

I created a Remote Inbox Notification to inform WCPay merchants of a new feature. I created a test RIN using my test site as a target using an options based rule on the siteurl. The RIN never showed up. I ran 4 tests: Test A, B, C, and D that consisted of variations of the url:

A: { "type": "option", "option_name": "siteurl", "value": "https://pieroatomic3.wpcomstaging.com", "default": "", "operation": "=" }

B: { "type": "option", "option_name": "siteurl", "value": "http://pieroatomic3.wpcomstaging.com", "default": "", "operation": "=" }

C: { "type": "option", "option_name": "siteurl", "value": "https://pieroatomic3.wpcomstaging.com/", "default": "", "operation": "=" }

D: { "type": "option", "option_name": "siteurl", "value": "http://pieroatomic3.wpcomstaging.com/", "default": "", "operation": "=" }

Test A matched based on https://pieroatomic3.wpcomstaging.com/ which is the Site address (url) in the WC System Status report.

My siteurl value in the wp_options table, observed with phpmyadmin, however is http://pieroatomic3.wpcomstaging.com/

Expected behavior

The RIN rule based on the options value siteurl should have matched on the siteurl value in the wp_options table not the system status siteurl.

Actual behavior

The rules matched on the WooCommerce system status site url value

Steps to reproduce

  1. Go to Woocommerce.com/wp-admin and create a RIN using the UI interface (see https://woocommerce.com/wp-admin/post.php?post=18734001943713&action=edit for the actual RIN configuration)

  2. Publish the RIN

  3. Force run the wc_admin_daily cron job

  4. Observe that the RIN matched based on the WooCommerce system status value and not the siteurl value in the wp_options table.

WordPress Environment

`

WordPress Environment

WordPress address (URL): https://pieroatomic3.wpcomstaging.com Site address (URL): https://pieroatomic3.wpcomstaging.com WC Version: 7.6.1 REST API Version: ✔ 7.6.1 WC Blocks Version: ✔ 10.1.0 Action Scheduler Version: ✔ 3.5.4 Log Directory Writable: ✔ WP Version: 6.2 WP Multisite: – WP Memory Limit: 512 MB WP Debug Mode: ✔ WP Cron: ✔ Language: en_US External object cache: ✔

Server Environment

Server Info: nginx PHP Version: 8.0.28 PHP Post Max Size: 2 GB PHP Time Limit: 1200 PHP Max Input Vars: 6144 cURL Version: 7.86.0 OpenSSL/1.1.1n

SUHOSIN Installed: – MySQL Version: 10.4.25-MariaDB-log Max Upload Size: 2 GB Default Timezone is UTC: ✔ fsockopen/cURL: ✔ SoapClient: ✔ DOMDocument: ✔ GZip: ✔ Multibyte String: ✔ Remote Post: ✔ Remote Get: ✔

Database

WC Database Version: 7.6.1 WC Database Prefix: wp_ Total Database Size: 6.22MB Database Data Size: 4.52MB Database Index Size: 1.70MB wp_woocommerce_sessions: Data: 0.16MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_api_keys: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_attribute_taxonomies: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_downloadable_product_permissions: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_order_items: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_order_itemmeta: Data: 0.06MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_tax_rates: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_tax_rate_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zones: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_shipping_zone_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zone_methods: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_payment_tokens: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_payment_tokenmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_log: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_actions: Data: 0.02MB + Index: 0.11MB + Engine InnoDB wp_actionscheduler_claims: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_groups: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_logs: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_commentmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_comments: Data: 0.06MB + Index: 0.09MB + Engine InnoDB wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_options: Data: 1.11MB + Index: 0.06MB + Engine InnoDB wp_postmeta: Data: 0.36MB + Index: 0.20MB + Engine InnoDB wp_posts: Data: 0.31MB + Index: 0.06MB + Engine InnoDB wp_snippets: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_termmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_terms: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_term_relationships: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_term_taxonomy: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_usermeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_users: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_admin_notes: Data: 0.08MB + Index: 0.00MB + Engine InnoDB wp_wc_admin_note_actions: Data: 0.08MB + Index: 0.02MB + Engine InnoDB wp_wc_category_lookup: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_customer_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_download_log: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_product_lookup: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_wc_order_stats: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_order_tax_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_product_attributes_lookup: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_download_directories: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_meta_lookup: Data: 0.02MB + Index: 0.09MB + Engine InnoDB wp_wc_rate_limits: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_reserved_stock: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_tax_rate_classes: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_webhooks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wpml_mails: Data: 1.52MB + Index: 0.00MB + Engine InnoDB

Post Type Counts

attachment: 33 customize_changeset: 3 jetpack_migration: 2 jp_img_sitemap: 6 jp_pay_product: 5 jp_sitemap: 6 jp_sitemap_master: 6 nav_menu_item: 6 page: 8 post: 8 product: 19 product_variation: 7 revision: 14 shop_order: 26 shop_subscription: 1 wp_global_styles: 5 wp_navigation: 1 wp_template: 1 wp_template_part: 1

Security

Secure connection (HTTPS): ✔ Hide errors from visitors: ✔

Active Plugins (17)

Akismet Anti-Spam: by Automattic – 5.1 Code Snippets: by Code Snippets Pro – 3.3.0 Crowdsignal Forms: by Automattic – 1.7.0 WordPress.com Editing Toolkit: by Automattic – 3.64678 Gutenberg: by Gutenberg Team – 15.7.0 Jetpack: by Automattic – 12.2-a.1 Layout Grid: by Automattic – 1.8.2 Page Optimize: by Automattic – 0.5.3 Crowdsignal Polls & Ratings: by Automattic Inc. – 3.0.10

WooCommerce Blocks: by Automattic – 10.1.0 WooCommerce EU VAT Number: by WooCommerce – 2.8.3 WooCommerce Payments Dev Tools: by Automattic – WooCommerce Payments: by Automattic – 5.8.1 WooCommerce Shipping & Tax: by WooCommerce – 2.2.4 WooCommerce: by Automattic – 7.6.1 WP Crontrol: by John Blackbourn & crontributors – 1.15.2 WP Mail Logging: by WP Mail Logging Team – 1.11.0

Inactive Plugins (1)

Classic Editor: by WordPress Contributors – 1.6.3

Dropin Plugins (2)

advanced-cache.php: advanced-cache.php object-cache.php: Memcached

Must Use Plugins (1)

WP.com Site Helper: by –

Settings

API Enabled: – Force SSL: – Currency: USD ($) Currency Position: left Thousand Separator: , Decimal Separator: . Number of Decimals: 2 Taxonomies: Product Types: external (external) grouped (grouped) simple (simple) subscription (subscription) variable (variable) variable subscription (variable-subscription)

Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog) exclude-from-search (exclude-from-search) featured (featured) outofstock (outofstock) rated-1 (rated-1) rated-2 (rated-2) rated-3 (rated-3) rated-4 (rated-4) rated-5 (rated-5)

Connected to WooCommerce.com: – Enforce Approved Product Download Directories: ✔ Order datastore: WC_Order_Data_Store_CPT

WC Pages

Shop base: #16 - / Cart: #118 - /cart-2/ Checkout: #99 - /checkout/ My account: #19 - /my-account/ Terms and conditions: ❌ Page not set

Theme

Name: Storefront Version: 4.2.0 Author URL: https://woocommerce.com/ Child Theme: ❌ – If you are modifying WooCommerce on a parent theme that you did not build personally we recommend using a child theme. See: How to create a child theme WooCommerce Support: ✔

Templates

Overrides: /srv/htdocs/wp-content/plugins/woo-gutenberg-products-block/templates/notices/error.php /srv/htdocs/wp-content/plugins/woo-gutenberg-products-block/templates/notices/notice.php /srv/htdocs/wp-content/plugins/woo-gutenberg-products-block/templates/notices/success.php

Subscriptions

WCS_DEBUG: ✔ No Subscriptions Mode: ✔ Live Subscriptions Live URL: https://pieroatomic3.wpcomstaging.com Subscriptions-core Library Version: 5.6.0 Subscription Statuses: wc-active: 1 WooCommerce Account Connected: ❌ No

Store Setup

Country / State: United States (US) — California

Subscriptions by Payment Gateway

WooCommerce Payments: wc-active: 1

Payment Gateway Support

WooCommerce Payments: products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method

Direct bank transfer: products Check payments: products Cash on delivery: products WooCommerce Payments (Bancontact): products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method

WooCommerce Payments (EPS): products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method

WooCommerce Payments (giropay): products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method

WooCommerce Payments (Sofort): products refunds multiple_subscriptions subscription_cancellation subscription_payment_method_change_admin subscription_payment_method_change_customer subscription_payment_method_change subscription_reactivation subscription_suspension subscriptions gateway_scheduled_payments tokenization add_payment_method

Admin

Enabled Features: activity-panels analytics coupons customer-effort-score-tracks import-products-task experimental-fashion-sample-products shipping-smart-defaults shipping-setting-tour homescreen marketing multichannel-marketing mobile-app-banner navigation onboarding onboarding-tasks remote-inbox-notifications remote-free-extensions payment-gateway-suggestions shipping-label-banner subscriptions store-alerts transient-notices woo-mobile-welcome wc-pay-promotion wc-pay-welcome-page

Disabled Features: block-editor-feature-enabled minified-js new-product-management-experience product-variation-management settings

Daily Cron: ✔ Next scheduled: 2023-05-08 17:50:17 -07:00 Options: ✔ Notes: 65 Onboarding: completed

WooCommerce Payments

Version: 5.8.1 Connected to WPCOM: Yes Blog ID: 209425323 Account ID: acct_1LTAQF2EovLjg4D0

Action Scheduler

Complete: 6 Oldest: 2023-05-05 10:49:56 -0700 Newest: 2023-05-08 08:24:45 -0700

Pending: 1 Oldest: 2023-05-08 23:27:17 -0700 Newest: 2023-05-08 23:27:17 -0700

Status report information

Generated at: 2023-05-08 08:24:55 -07:00 `

Isolating the problem

pierorocca commented 1 year ago

Here's the siteurl value from the wp_options table entry

image

Log test results for the 4 tests

image

Confirmation that all 4 tests were processed by the site

image

leonardola commented 1 year ago

I've debugged this a bit and found out that this filter gets called and returns the value of 'WP_SITEURL' instead of the siteurl saved in wp_options.

pierorocca commented 1 year ago

I am noticing that ALL of my atomic sites have a siteurl that don't match the WP_Siteurl. I don't see any override either in the wp-config.php file. Regardless, if the rule is supposed to match on the wp_options table value, that's what it should always match on not some other field value. Another field like WP_Siteurl should have it's own rule.

octaedro commented 1 year ago

Hey @pierorocca,

I have a fix for this bug here. Should it be included in WC 7.8 (as part of a code freeze exception), or can it wait until 7.9?

pierorocca commented 1 year ago

It can wait for a regular release thanks. We found an alternative way to transform on serialized data to target a specific merchant group.