Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection

QueryBuilder::get_product_visibility_query()privateWC 1.0

Return a query for product visibility depending on their stock status.

Method of the class: QueryBuilder{}

No Hooks.

Return

Array. Tax query for product visibility.

Usage

// private - for code of main (parent) class only
$result = $this->get_product_visibility_query( $stock_query, $stock_status );
$stock_query(array) (required)
Stock status query.
$stock_status(array) (required)
Selected stock status.

QueryBuilder::get_product_visibility_query() code WC 9.6.0

private function get_product_visibility_query( $stock_query, $stock_status ) {
	$product_visibility_terms  = wc_get_product_visibility_term_ids();
	$product_visibility_not_in = array( is_search() ? $product_visibility_terms['exclude-from-search'] : $product_visibility_terms['exclude-from-catalog'] );

	// Hide out of stock products.
	if ( empty( $stock_query ) && ! in_array( 'outofstock', $stock_status, true ) ) {
		$product_visibility_not_in[] = $product_visibility_terms['outofstock'];
	}

	return array(
		// phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
		'tax_query' => array(
			array(
				'taxonomy' => 'product_visibility',
				'field'    => 'term_taxonomy_id',
				'terms'    => $product_visibility_not_in,
				'operator' => 'NOT IN',
			),
		),
	);
}