“update_post_meta” does not work when “Enable compatibility mode” is enabled
-
Hello,
From my understanding the compatibility mode should be enabled if the order was a post instead of a page in the past.
But I’ve found a case where one of my clients have “pages” as orders with this option enabled (high performance order storage + Enable compatibility mode)
Should “Enable compatibility mode” be enabled if the orders are already “pages” instead of posts?
When these 2 settings are enabled on a page order, the update_post_meta function no longer works how it should.
This is how to reproduce this error:
Set a post meta property during checkout.
(the post meta is being set correctly, get_post_meta will display the property)
In order admin check again for this post meta. Now it no longer exists.
It seems to be deleted at some point.
Since more users will inevitably set these setting like this in the future, is it correct to just tell them to disable the “Enable compatibility” mode?
Thank you! Please let me know if you need any more information from me.
-
Hi @tccand
The “Enable compatibility mode” is generally used when you’re transitioning from an older version of WooCommerce, where orders are stored as posts. If your orders are already being stored as pages, there is typically no need to enable this setting.
However, it’s unusual that enabling this option along with the high performance order storage is causing the
update_post_meta
function to behave abnormally. This might be an issue specific to your client’s setup or could potentially be a bug.As a workaround, you can advise your clients to disable the “Enable compatibility mode” if they’re experiencing this issue. But, we’d like to investigate this further to understand the root cause.
Could you please share a copy of the following:
- System Status Report: Navigate to WooCommerce → Status. Select Get System Report and then Download for Support.
- Fatal Error log: Share a copy of any fatal error log found under WooCommerce → Status → Logs.
You could copy and paste your reply or share it via Mozilla Community Pastebin and share the link here. This will help us investigate further and provide you with a more accurate solution.
Looking forward to helping you.
I’ve tested this on a fresh install.
There are no errors in the log files.` WordPress Environment WordPress address (URL): https://newoobill.lambda.brunomag.ro Site address (URL): https://newoobill.lambda.brunomag.ro WC Version: 8.4.0 REST API Version: ? 8.4.0 WC Blocks Version: ? 11.6.2 Action Scheduler Version: ? 3.7.0 Log Directory Writable: ? WP Version: 6.4.2 WP Multisite: – WP Memory Limit: 256 MB WP Debug Mode: – WP Cron: ? Language: en_US External object cache: – Server Environment Server Info: Apache PHP Version: 8.1.18 PHP Post Max Size: 8 MB PHP Time Limit: 30 PHP Max Input Vars: 1000 cURL Version: 7.81.0 OpenSSL/3.0.2 SUHOSIN Installed: – MySQL Version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Max Upload Size: 2 MB Default Timezone is UTC: ? fsockopen/cURL: ? SoapClient: ? DOMDocument: ? GZip: ? Multibyte String: ? Remote Post: ? Remote Get: ? Database WC Database Version: 8.4.0 WC Database Prefix: wp_ Total Database Size: 5.28MB Database Data Size: 3.58MB Database Index Size: 1.70MB wp_woocommerce_sessions: Data: 0.02MB + 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.02MB + Index: 0.03MB + 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.02MB + Index: 0.09MB + Engine InnoDB wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_options: Data: 2.48MB + Index: 0.06MB + Engine InnoDB wp_postmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_posts: Data: 0.06MB + Index: 0.06MB + 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.06MB + Index: 0.00MB + Engine InnoDB wp_wc_admin_note_actions: Data: 0.06MB + 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_orders: Data: 0.02MB + Index: 0.11MB + Engine InnoDB wp_wc_orders_meta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_addresses: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_operational_data: 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 Post Type Counts attachment: 1 page: 7 post: 2 product: 1 revision: 1 shop_order_placehold: 3 wp_global_styles: 1 wp_navigation: 1 wp_template: 2 Security Secure connection (HTTPS): ? Hide errors from visitors: ? Active Plugins (2) SmartBill Facturare si Gestiune: by smarbill.ro – 3.1.7 WooCommerce: by Automattic – 8.4.0 Inactive Plugins (2) Akismet Anti-spam: Spam Protection: by Automattic - Anti-spam Team – 5.3 Hello Dolly: by Matt Mullenweg – 1.7.2 Settings API Enabled: – Force SSL: – Currency: RON (lei) Currency Position: right_space Thousand Separator: . Decimal Separator: , Number of Decimals: 2 Taxonomies: Product Types: external (external) grouped (grouped) simple (simple) variable (variable) 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 Woo.com: – Enforce Approved Product Download Directories: ? HPOS feature screen enabled: ? HPOS feature enabled: ? Order datastore: Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore HPOS data sync enabled: – WC Pages Shop base: #7 - /shop/ Cart: #8 - /cart/ Checkout: #9 - /checkout/ My account: #10 - /my-account/ Terms and conditions: ? Page not set Theme Name: Twenty Twenty-Four Version: 1.0 Author URL: https://www.remarpro.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: ? Not declared Templates Overrides: /home/newoobill/public_html/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/error.php /home/newoobill/public_html/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/notice.php /home/newoobill/public_html/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/success.php Admin Enabled Features: activity-panels analytics product-block-editor coupons core-profiler customer-effort-score-tracks import-products-task experimental-fashion-sample-products shipping-smart-defaults shipping-setting-tour homescreen marketing mobile-app-banner navigation onboarding onboarding-tasks product-variation-management product-virtual-downloadable 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: customize-store minified-js new-product-management-experience product-external-affiliate settings async-product-editor-category-field Daily Cron: ? Next scheduled: 2023-12-14 11:33:26 +00:00 Options: ? Notes: 64 Onboarding: skipped Action Scheduler Complete: 8 Oldest: 2023-12-13 11:34:30 +0000 Newest: 2023-12-13 11:41:07 +0000 Failed: 2 Oldest: 2023-12-13 11:37:09 +0000 Newest: 2023-12-13 11:37:26 +0000 Pending: 1 Oldest: 2023-12-14 11:34:30 +0000 Newest: 2023-12-14 11:34:30 +0000 Status report information Generated at: 2023-12-13 15:21:05 +00:00 `
-
This reply was modified 1 year, 3 months ago by
tccand.
Hello @tccand,
From my understanding the compatibility mode should be enabled if the order was a post instead of a page in the past.
I believe there might be a misunderstanding here. With HPOS, orders aren’t considered
wp_posts
or a WordPress Page, as they’re stored in a separate database table.Regarding your query about
update_post_meta()
, this behavior is expected. Most WordPress core APIs that interact with posts won’t work when HPOS is enabled.You can replace this with the
$order
object:$order->update_meta_data( $meta_key_1, $meta_value_1 );
You can find more details about this in the High Performance Order Storage Upgrade Recipe Book.
Hope this clarifies things!
That seems to solve the problem.
Thank you!
- The topic ‘“update_post_meta” does not work when “Enable compatibility mode” is enabled’ is closed to new replies.