Automattic\WooCommerce\Blocks\BlockTypes

ProductFilterStatus::get_stock_status_countsprivateWC 1.0

Retrieve the status filter data for current block.

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

Хуков нет.

Возвращает

null. Ничего (null).

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

// private - только в коде основоного (родительского) класса
$result = $this->get_stock_status_counts( $block );
$block(WP_Block) (обязательный)
Block instance.

Код ProductFilterStatus::get_stock_status_counts() WC 9.9.4

private function get_stock_status_counts( $block ) {
	$query_vars = ProductCollectionUtils::get_query_vars( $block, 1 );

	unset(
		$query_vars['filter_stock_status'],
	);

	if ( isset( $query_vars['taxonomy'] ) && false !== strpos( $query_vars['taxonomy'], 'pa_' ) ) {
		unset(
			$query_vars['taxonomy'],
			$query_vars['term']
		);
	}

	if ( ! empty( $query_vars['meta_query'] ) ) {
		// phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
		$query_vars['meta_query'] = ProductCollectionUtils::remove_query_array( $query_vars['meta_query'], 'key', '_stock_status' );
	}

	$container = wc_get_container();
	$counts    = $container->get( FilterDataProvider::class )->with( $container->get( QueryClauses::class ) )->get_stock_status_counts( $query_vars, array_keys( wc_get_product_stock_status_options() ) );
	$data      = array();

	foreach ( $counts as $key => $value ) {
		$data[] = array(
			'status' => $key,
			'count'  => intval( $value ),
		);
	}

	return array_filter(
		$data,
		function ( $stock_count ) {
			return $stock_count['count'] > 0;
		}
	);
}