Automattic\WooCommerce\Blocks\BlockTypes
ClassicTemplate::filter_products_by_stock()
Filter products by stock status when as query param there is "filter_stock_status"
Метод класса: ClassicTemplate{}
Хуков нет.
Возвращает
Массив
.
Использование
$ClassicTemplate = new ClassicTemplate(); $ClassicTemplate->filter_products_by_stock( $meta_query );
- $meta_query(массив) (обязательный)
- Meta query.
Код ClassicTemplate::filter_products_by_stock() ClassicTemplate::filter products by stock WC 7.7.0
public function filter_products_by_stock( $meta_query ) { global $wp_query; if ( is_admin() || ! $wp_query->is_main_query() || ! isset( $_GET[ self::FILTER_PRODUCTS_BY_STOCK_QUERY_PARAM ] ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended ) { return $meta_query; } $stock_status = array_keys( wc_get_product_stock_status_options() ); $values = sanitize_text_field( wp_unslash( $_GET[ self::FILTER_PRODUCTS_BY_STOCK_QUERY_PARAM ] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended $values_to_array = explode( ',', $values ); $filtered_values = array_filter( $values_to_array, function( $value ) use ( $stock_status ) { return in_array( $value, $stock_status, true ); } ); if ( ! empty( $filtered_values ) ) { $meta_query[] = array( 'key' => '_stock_status', 'value' => $filtered_values, 'compare' => 'IN', ); } return $meta_query; }