diff --git a/includes/admin/list-tables/class-wc-admin-list-table-products.php b/includes/admin/list-tables/class-wc-admin-list-table-products.php index 36689d8909f..b48e35648c5 100644 --- a/includes/admin/list-tables/class-wc-admin-list-table-products.php +++ b/includes/admin/list-tables/class-wc-admin-list-table-products.php @@ -301,8 +301,9 @@ class WC_Admin_List_Table_Products extends WC_Admin_List_Table { * Render any custom filters and search inputs for the list table. */ protected function render_filters() { - $current_category_slug = isset( $_REQUEST['product_cat'] ) ? wc_clean( wp_unslash( $_REQUEST['product_cat'] ) ) : false; // WPCS: input var ok, sanitization ok. - $current_product_type = isset( $_REQUEST['product_type'] ) ? wc_clean( wp_unslash( $_REQUEST['product_type'] ) ) : false; // WPCS: input var ok, sanitization ok. + $current_category_slug = isset( $_REQUEST['product_cat'] ) ? wc_clean( wp_unslash( $_REQUEST['product_cat'] ) ): false; // WPCS: input var ok, sanitization ok. + $current_product_type = isset( $_REQUEST['product_type'] ) ? wc_clean( wp_unslash( $_REQUEST['product_type'] ) ): false; // WPCS: input var ok, sanitization ok. + $current_stock_status = isset( $_REQUEST['stock_status'] ) ? wc_clean( wp_unslash( $_REQUEST['stock_status'] ) ): false; // WPCS: input var ok, sanitization ok. // @codingStandardsIgnoreStart $current_category = $current_category_slug ? get_term_by( 'slug', $current_category_slug, 'product_cat' ): false; // @codingStandardsIgnoreEnd @@ -364,6 +365,14 @@ class WC_Admin_List_Table_Products extends WC_Admin_List_Table { $output .= ''; + + $stock_statuses = wc_get_product_stock_status_options(); + $output .= ''; + echo apply_filters( 'woocommerce_product_filters', $output ); // WPCS: XSS ok. } @@ -374,6 +383,7 @@ class WC_Admin_List_Table_Products extends WC_Admin_List_Table { * @return array */ protected function query_filters( $query_vars ) { + if ( isset( $query_vars['orderby'] ) ) { if ( 'price' === $vars['orderby'] ) { // @codingStandardsIgnoreStart @@ -416,6 +426,17 @@ class WC_Admin_List_Table_Products extends WC_Admin_List_Table { ); } + if ( ! empty( $_GET['stock_status'] ) ) { + if ( ! isset( $query_vars['meta_query'] ) ) { + $query_vars['meta_query'] = array(); + } + + $query_vars['meta_query'][] = array( + 'key' => '_stock_status', + 'value' => esc_attr( $_GET['stock_status'] ), + ); + } + return $query_vars; }