first commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* Customize Site Health recommendations for WooCommerce.
|
||||
*/
|
||||
|
||||
namespace Automattic\WooCommerce\Internal\Admin;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
* SiteHealth class.
|
||||
*/
|
||||
class SiteHealth {
|
||||
/**
|
||||
* Class instance.
|
||||
*
|
||||
* @var SiteHealth instance
|
||||
*/
|
||||
protected static $instance = null;
|
||||
|
||||
/**
|
||||
* Get class instance.
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if ( ! self::$instance ) {
|
||||
self::$instance = new self();
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook into WooCommerce.
|
||||
*/
|
||||
public function __construct() {
|
||||
add_filter( 'site_status_should_suggest_persistent_object_cache', array( $this, 'should_suggest_persistent_object_cache' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Counts specific types of WooCommerce entities to determine if a persistent object cache would be beneficial.
|
||||
*
|
||||
* Note that if all measured WooCommerce entities are below their thresholds, this will return null so that the
|
||||
* other normal WordPress checks will still be run.
|
||||
*
|
||||
* @param true|null $check A non-null value will short-circuit WP's normal tests for this.
|
||||
*
|
||||
* @return true|null True if the store would benefit from a persistent object cache. Otherwise null.
|
||||
*/
|
||||
public function should_suggest_persistent_object_cache( $check ) {
|
||||
// Skip this if some other filter has already determined yes.
|
||||
if ( true === $check ) {
|
||||
return $check;
|
||||
}
|
||||
|
||||
$thresholds = array(
|
||||
'orders' => 100,
|
||||
'products' => 100,
|
||||
);
|
||||
|
||||
foreach ( $thresholds as $key => $threshold ) {
|
||||
try {
|
||||
switch ( $key ) {
|
||||
case 'orders':
|
||||
$orders_query = new \WC_Order_Query(
|
||||
array(
|
||||
'status' => 'any',
|
||||
'limit' => 1,
|
||||
'paginate' => true,
|
||||
'return' => 'ids',
|
||||
)
|
||||
);
|
||||
$orders_results = $orders_query->get_orders();
|
||||
if ( $orders_results->total >= $threshold ) {
|
||||
$check = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'products':
|
||||
$products_query = new \WC_Product_Query(
|
||||
array(
|
||||
'status' => 'any',
|
||||
'limit' => 1,
|
||||
'paginate' => true,
|
||||
'return' => 'ids',
|
||||
)
|
||||
);
|
||||
$products_results = $products_query->get_products();
|
||||
if ( $products_results->total >= $threshold ) {
|
||||
$check = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch ( \Exception $exception ) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ( ! is_null( $check ) ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $check;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user