Automattic\WooCommerce\Admin\API\Reports\Stock\Stats

DataStore::get_low_stock_count()privateWC 1.0

Get low stock count (products with stock < low stock amount, but greater than no stock amount).

Метод класса: DataStore{}

Хуков нет.

Возвращает

int. Low stock count.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->get_low_stock_count();

Код DataStore::get_low_stock_count() WC 8.7.0

private function get_low_stock_count() {
	global $wpdb;

	$no_stock_amount  = absint( max( get_option( 'woocommerce_notify_no_stock_amount' ), 0 ) );
	$low_stock_amount = absint( max( get_option( 'woocommerce_notify_low_stock_amount' ), 1 ) );

	return (int) $wpdb->get_var(
		$wpdb->prepare(
			"
			SELECT count( DISTINCT posts.ID ) FROM {$wpdb->posts} posts
			LEFT JOIN {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup ON posts.ID = wc_product_meta_lookup.product_id
			LEFT JOIN {$wpdb->postmeta} low_stock_amount_meta ON posts.ID = low_stock_amount_meta.post_id AND low_stock_amount_meta.meta_key = '_low_stock_amount'
			WHERE posts.post_type IN ( 'product', 'product_variation' )
			AND wc_product_meta_lookup.stock_quantity IS NOT NULL
			AND wc_product_meta_lookup.stock_status = 'instock'
			AND (
				(
					low_stock_amount_meta.meta_value > ''
					AND wc_product_meta_lookup.stock_quantity <= CAST(low_stock_amount_meta.meta_value AS SIGNED)
					AND wc_product_meta_lookup.stock_quantity > %d
				)
				OR (
					(
						low_stock_amount_meta.meta_value IS NULL OR low_stock_amount_meta.meta_value <= ''
					)
					AND wc_product_meta_lookup.stock_quantity <= %d
					AND wc_product_meta_lookup.stock_quantity > %d
				)
			)
			",
			$no_stock_amount,
			$low_stock_amount,
			$no_stock_amount
		)
	);
}