• Make theme changes.
  • Write a new post/page.
  • Edit a post/page.
  • Activate, deactivate, or update plugins that impact your site layout or HTML structure.
  • Change settings of plugins that impact your site layout or HTML structure.
  • Upgrade your WordPress version if the new release includes core CSS changes.
  • ', 'jetpack-my-jetpack' ), ), ), self::UPGRADED_TIER_SLUG => array( 'included' => true, 'description' => __( 'Included', 'jetpack-my-jetpack' ), 'info' => array( 'title' => __( 'Automatic Critical CSS regeneration', 'jetpack-my-jetpack' ), 'content' => __( '

    It’s essential to regenerate Critical CSS to optimize your site speed whenever your HTML or CSS structure changes. Being on top of this can be tedious and time-consuming.

    Boost’s cloud service can automatically detect when your site needs the Critical CSS regenerated, and perform this function behind the scenes without requiring you to monitor it manually.

    ', 'jetpack-my-jetpack' ), ), ), ), ), array( 'name' => __( 'Historical performance scores', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Get access to your historical performance scores and see advanced Core Web Vitals data.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => false ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Dedicated email support', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( '

    Paid customers get dedicated email support from our world-class Happiness Engineers to help with any issue.

    All other questions are handled by our team as quickly as we are able to go through the WordPress support forum.

    ', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => false ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Page Cache', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Page caching speeds up load times by storing a copy of each web page on the first visit, allowing subsequent visits to be served instantly. This reduces server load and improves user experience by delivering content faster, without waiting for the page to be generated again.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => true ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Image CDN Quality Settings', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Fine-tune image quality settings to your liking.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => false ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Image CDN Auto-Resize Lazy Images', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Optimizes lazy-loaded images by dynamically serving perfectly sized images for each device.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => false ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Image CDN', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Deliver images from Jetpack\'s Content Delivery Network. Automatically resizes your images to an appropriate size, converts them to modern efficient formats like WebP, and serves them from a worldwide network of servers.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => true ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Image guide', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Discover and fix images with a suboptimal resolution, aspect ratio, or file size, improving user experience and page speed.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => true ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Defer non-essential JavaScript', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Run non-essential JavaScript after the page has loaded so that styles and images can load more quickly.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => true ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), array( 'name' => __( 'Concatenate JS and CSS', 'jetpack-my-jetpack' ), 'info' => array( 'content' => __( 'Boost your website performance by merging and compressing JavaScript and CSS files, reducing site loading time and number of requests.', 'jetpack-my-jetpack' ), ), 'tiers' => array( self::FREE_TIER_SLUG => array( 'included' => true ), self::UPGRADED_TIER_SLUG => array( 'included' => true ), ), ), ); } /** * Get the URL the user is taken after purchasing the product through the checkout * * @return ?string */ public static function get_post_checkout_url() { return self::get_manage_url(); } /** * Get the product princing details * * @return array Pricing details */ public static function get_pricing_for_ui() { return array( 'tiers' => array( self::FREE_TIER_SLUG => array( 'available' => true, 'is_free' => true, ), self::UPGRADED_TIER_SLUG => array_merge( array( 'available' => true, 'wpcom_product_slug' => self::UPGRADED_TIER_PRODUCT_SLUG, ), Wpcom_Products::get_product_pricing( self::UPGRADED_TIER_PRODUCT_SLUG ) ), ), ); } /** * Get the URL where the user manages the product * * @return ?string */ public static function get_manage_url() { return admin_url( 'admin.php?page=jetpack-boost' ); } /** * Activates the product by installing and activating its plugin * * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. * @return boolean|WP_Error */ public static function do_product_specific_activation( $current_result ) { $product_activation = parent::do_product_specific_activation( $current_result ); if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. $product_activation = true; } // We just "got started" in My Jetpack, so skip the in-plugin experience. update_option( 'jb_get_started', false ); return $product_activation; } /** * Get the product-slugs of the paid plans for this product. * (Do not include bundle plans, unless it's a bundle plan itself). * * @return array */ public static function get_paid_plan_product_slugs() { return array( 'jetpack_boost_yearly', 'jetpack_boost_monthly', 'jetpack_boost_bi_yearly', ); } /** * Return product bundles list * that supports the product. * * @return boolean|array Products bundle list. */ public static function is_upgradable_by_bundle() { return array( 'complete' ); } }