Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection
QueryBuilder::get_stock_status_query()
Return a query for products depending on their stock status.
Method of the class: QueryBuilder{}
No Hooks.
Return
Array
.
Usage
// private - for code of main (parent) class only $result = $this->get_stock_status_query( $stock_statuses );
- $stock_statuses(array) (required)
- An array of acceptable stock statuses.
QueryBuilder::get_stock_status_query() QueryBuilder::get stock status query code WC 9.6.1
private function get_stock_status_query( $stock_statuses ) { if ( ! is_array( $stock_statuses ) ) { return array(); } $stock_status_options = array_keys( wc_get_product_stock_status_options() ); /** * If all available stock status are selected, we don't need to add the * meta query for stock status. */ if ( count( $stock_statuses ) === count( $stock_status_options ) && array_diff( $stock_statuses, $stock_status_options ) === array_diff( $stock_status_options, $stock_statuses ) ) { return array(); } /** * If all stock statuses are selected except 'outofstock', we use the * product visibility query to filter out out of stock products. * * @see get_product_visibility_query() */ $diff = array_diff( $stock_status_options, $stock_statuses ); if ( count( $diff ) === 1 && in_array( 'outofstock', $diff, true ) ) { return array(); } return array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query 'meta_query' => array( array( 'key' => '_stock_status', 'value' => (array) $stock_statuses, 'compare' => 'IN', ), ), ); }