From ba12049b79b299034ddd013ae528c73324737578 Mon Sep 17 00:00:00 2001 From: Fernando Date: Wed, 22 Jul 2020 15:24:03 -0300 Subject: [PATCH] New notification: Don't forget to test your checkout (https://github.com/woocommerce/woocommerce-admin/pull/4805) * Added Test Checkout note This commit adds a note to test the checkout process # Conflicts: # src/Events.php # src/FeaturePlugin.php * Replaced method "site_url" with "wc_get_page_permalink" * Removed products with state draft verifcation from "check_task_completion" This commit modifies the code to not set the products task list item as done when they have state draft. * Added published date control This commit adds a product published date control to the note * Half-hour calculation changed * Typo error corrected Co-authored-by: Fernando Marichal --- plugins/woocommerce-admin/src/Events.php | 2 + .../woocommerce-admin/src/FeaturePlugin.php | 2 + .../src/Features/OnboardingTasks.php | 2 +- .../Notes/WC_Admin_Notes_Test_Checkout.php | 98 +++++++++++++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce-admin/src/Notes/WC_Admin_Notes_Test_Checkout.php diff --git a/plugins/woocommerce-admin/src/Events.php b/plugins/woocommerce-admin/src/Events.php index 28dfcdb4fe8..e9e40912089 100644 --- a/plugins/woocommerce-admin/src/Events.php +++ b/plugins/woocommerce-admin/src/Events.php @@ -37,6 +37,7 @@ use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Online_Clothing_Store; use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_First_Product; use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Customize_Store_With_Blocks; use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Facebook_Marketing_Expert; +use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Test_Checkout; /** * WC_Admin_Events Class. @@ -105,6 +106,7 @@ class Events { WC_Admin_Notes_Real_Time_Order_Alerts::possibly_add_note(); WC_Admin_Notes_Customize_Store_With_Blocks::possibly_add_note(); WC_Admin_Notes_Facebook_Marketing_Expert::possibly_add_note(); + WC_Admin_Notes_Test_Checkout::possibly_add_note(); if ( Loader::is_feature_enabled( 'remote-inbox-notifications' ) ) { DataSourcePoller::read_specs_from_data_sources(); diff --git a/plugins/woocommerce-admin/src/FeaturePlugin.php b/plugins/woocommerce-admin/src/FeaturePlugin.php index 05c7860544a..a7daf597f0a 100644 --- a/plugins/woocommerce-admin/src/FeaturePlugin.php +++ b/plugins/woocommerce-admin/src/FeaturePlugin.php @@ -21,6 +21,7 @@ use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Coupon_Page_Moved; use \Automattic\WooCommerce\Admin\RemoteInboxNotifications\RemoteInboxNotificationsEngine; use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Home_Screen_Feedback; use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Set_Up_Additional_Payment_Types; +use \Automattic\WooCommerce\Admin\Notes\WC_Admin_Notes_Test_Checkout; /** * Feature plugin main class. @@ -194,6 +195,7 @@ class FeaturePlugin { new WC_Admin_Notes_Draw_Attention(); new WC_Admin_Notes_Home_Screen_Feedback(); new WC_Admin_Notes_Set_Up_Additional_Payment_Types(); + new WC_Admin_Notes_Test_Checkout(); // Initialize RemoteInboxNotificationsEngine. RemoteInboxNotificationsEngine::init(); diff --git a/plugins/woocommerce-admin/src/Features/OnboardingTasks.php b/plugins/woocommerce-admin/src/Features/OnboardingTasks.php index 03a42676023..27639cb4b3c 100644 --- a/plugins/woocommerce-admin/src/Features/OnboardingTasks.php +++ b/plugins/woocommerce-admin/src/Features/OnboardingTasks.php @@ -178,7 +178,7 @@ class OnboardingTasks { switch ( $task ) { case 'products': $products = wp_count_posts( 'product' ); - return (int) $products->publish > 0 || (int) $products->draft > 0; + return (int) $products->publish > 0; case 'homepage': $homepage_id = get_option( 'woocommerce_onboarding_homepage_post_id', false ); if ( ! $homepage_id ) { diff --git a/plugins/woocommerce-admin/src/Notes/WC_Admin_Notes_Test_Checkout.php b/plugins/woocommerce-admin/src/Notes/WC_Admin_Notes_Test_Checkout.php new file mode 100644 index 00000000000..12362b483e0 --- /dev/null +++ b/plugins/woocommerce-admin/src/Notes/WC_Admin_Notes_Test_Checkout.php @@ -0,0 +1,98 @@ + 1, + 'status' => 'publish', + 'orderby' => 'date', + 'order' => 'ASC', + ) + ); + + $products = $query->get_products(); + if ( 0 === count( $products ) ) { + return; + } + + $oldest_product_timestamp = $products[0]->get_date_created()->getTimestamp(); + $half_hour_in_seconds = 30 * MINUTE_IN_SECONDS; + if ( ( time() - $oldest_product_timestamp ) > $half_hour_in_seconds ) { + return; + } + + $content = __( 'Make sure that your checkout is working properly before you launch your store. Go through your checkout process in its entirety: from adding a product to your cart, choosing a shipping location, and making a payment.', 'woocommerce-admin' ); + + $note = new WC_Admin_Note(); + $note->set_title( __( 'Don\'t forget to test your checkout', 'woocommerce-admin' ) ); + $note->set_content( $content ); + $note->set_content_data( (object) array() ); + $note->set_type( WC_Admin_Note::E_WC_ADMIN_NOTE_INFORMATIONAL ); + $note->set_name( self::NOTE_NAME ); + $note->set_source( 'woocommerce-admin' ); + $note->add_action( 'test-checkout', __( 'Test checkout', 'woocommerce-admin' ), wc_get_page_permalink( 'shop' ) ); + return $note; + } +}