diff --git a/facebook-for-woocommerce.php b/facebook-for-woocommerce.php index 95ef78b69..f268f8e15 100644 --- a/facebook-for-woocommerce.php +++ b/facebook-for-woocommerce.php @@ -21,8 +21,19 @@ * @package FacebookCommerce */ +use Automattic\WooCommerce\Utilities\FeaturesUtil; + defined( 'ABSPATH' ) || exit; +// HPOS compatibility declaration. +add_action( + 'before_woocommerce_init', + function() { + if ( class_exists( FeaturesUtil::class ) ) { + FeaturesUtil::declare_compatibility( 'custom_order_tables', plugin_basename( __FILE__ ), true ); + } + } +); /** * The plugin loader class. * diff --git a/includes/Admin.php b/includes/Admin.php index a9d40e503..4120ed27f 100644 --- a/includes/Admin.php +++ b/includes/Admin.php @@ -12,6 +12,7 @@ namespace SkyVerge\WooCommerce\Facebook; use SkyVerge\WooCommerce\PluginFramework\v5_10_0\SV_WC_Helper; +use Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController; defined( 'ABSPATH' ) or exit; @@ -46,13 +47,17 @@ class Admin { */ public function __construct() { + $order_screen_id = wc_get_container()->get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() + ? wc_get_page_screen_id( 'shop-order' ) + : 'shop_order'; + $this->screen_ids = [ 'product', 'edit-product', 'woocommerce_page_wc-facebook', 'marketing_page_wc-facebook', 'edit-product_cat', - 'shop_order', + $order_screen_id, ]; // enqueue admin scripts diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php index 9c675b6a6..12bdb1d93 100644 --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php @@ -1,6 +1,7 @@ amOnAdminPage('edit.php?post_type=shop_order' ); + if ( wc_get_container()->get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() ) { + $orders_page = 'admin.php?page=wc-orders'; + } else { + $orders_page = 'edit.php?post_type=shop_order'; + } + + $this->amOnAdminPage( $orders_page ); } @@ -208,7 +215,13 @@ public function amOnOrdersPage() { */ public function amOnOrderPage( $order_id ) { - $this->amOnAdminPage( "post.php?post={$order_id}&action=edit" ); + if ( wc_get_container()->get( CustomOrdersTableController::class )->custom_orders_table_usage_is_enabled() ) { + $order_page = "admin.php?page=wc-orders&id={$order_id}&action=edit"; + } else { + $order_page = "post.php?post={$order_id}&action=edit"; + } + + $this->amOnAdminPage( $order_page ); }