Add method to check WcPaySubscriptionsPage eligibility
This commit is contained in:
parent
0942a8b169
commit
0947b40b8d
|
@ -3,6 +3,7 @@
|
||||||
namespace Automattic\WooCommerce\Internal\Admin;
|
namespace Automattic\WooCommerce\Internal\Admin;
|
||||||
|
|
||||||
use Automattic\WooCommerce\Admin\PageController;
|
use Automattic\WooCommerce\Admin\PageController;
|
||||||
|
use Automattic\WooCommerce\Admin\PluginsHelper;
|
||||||
use Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks\WooCommercePayments;
|
use Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks\WooCommercePayments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,12 +43,7 @@ class WcPaySubscriptionsPage {
|
||||||
public function register_subscriptions_page() {
|
public function register_subscriptions_page() {
|
||||||
global $submenu;
|
global $submenu;
|
||||||
|
|
||||||
// WC Payments must not be active.
|
if ( ! $this->is_store_experiment_eligible() ) {
|
||||||
if ( is_plugin_active( 'woocommerce-payments/woocommerce-payments.php' ) ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! WooCommercePayments::is_supported() ) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +70,51 @@ class WcPaySubscriptionsPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the store is eligible for the WooCommerce subsciptions empty state experiment.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function is_store_experiment_eligible() {
|
||||||
|
// Ineligible if WooCommerce Payments OR an existing subscriptions plugin is active.
|
||||||
|
$active_plugins = PluginsHelper::get_active_plugin_slugs();
|
||||||
|
$plugin_ineligible_list = array(
|
||||||
|
'woocommerce-payments',
|
||||||
|
'woocommerce-subscriptions',
|
||||||
|
'subscriptions-for-woocommerce',
|
||||||
|
'subscriptions-for-woocommerce-pro',
|
||||||
|
'yith-woocommerce-subscription',
|
||||||
|
);
|
||||||
|
foreach ( $plugin_ineligible_list as $plugin_slug ) {
|
||||||
|
if ( in_array( $plugin_slug, $active_plugins, true ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ineligible if store address is not compatible with WCPay Subscriptions (US).
|
||||||
|
if ( ! WooCommercePayments::is_supported() ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ineligible if store has not had any sales in the last 30 days.
|
||||||
|
$store_recent_sales_count = $this->get_store_recent_sales_count();
|
||||||
|
if ( ! $store_recent_sales_count || $store_recent_sales_count < 1 ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of store recent sales as per the experiment eligibility criteria.
|
||||||
|
*/
|
||||||
|
private function get_store_recent_sales_count() {
|
||||||
|
// Get orders that were paid in the last 30 days.
|
||||||
|
$orders = wc_get_orders( array( 'date_paid' => '>' . strtotime( '-30 days' ) ) );
|
||||||
|
|
||||||
|
return count( $orders );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers when a user views the WCPay Subscriptions screen.
|
* Registers when a user views the WCPay Subscriptions screen.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue