Automattic\WooCommerce\Blocks\BlockTypes
ProductFilterStatus::get_stock_status_counts
Retrieve the status filter data for current block.
Method of the class: ProductFilterStatus{}
No Hooks.
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->get_stock_status_counts( $block );
- $block(WP_Block) (required)
- Block instance.
ProductFilterStatus::get_stock_status_counts() ProductFilterStatus::get stock status counts code WC 10.4.3
private function get_stock_status_counts( $block ) {
if ( ! isset( $block->context['filterParams'] ) ) {
return array();
}
$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;
}
);
}