I have a large number of products that are out of stock. They have a status of 'out of stock' and a quatity of 0.

I would like these to be hidden from the admin 'products page'.

They do not appear in the shop. This is working correctly. I want them to be hidden from the admin pages.

How can I do this?

I am happy to write a piece of code to do this. What function is used to generate the list for the product page?

Thanks, George

  • How do you get to edit them if they are hidden, you will surely need a toggle so you can see them or hide them. – Chris Pink Jul 24 '17 at 14:10

You can do that by adding the code below on your theme functions php file.

add_action( 'pre_get_posts', 'iconic_hide_out_of_stock_products' );

function iconic_hide_out_of_stock_products( $q ) {

if ( ! $q->is_main_query() || is_admin() ) {

if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {

    $tax_query = (array) $q->get('tax_query');

    $tax_query[] = array(
        'taxonomy' => 'product_visibility',
        'field' => 'term_taxonomy_id',
        'terms' => array( $outofstock_term->term_taxonomy_id ),
        'operator' => 'NOT IN'

    $q->set( 'tax_query', $tax_query );


remove_action( 'pre_get_posts', 'iconic_hide_out_of_stock_products' );


This code was tested on the font end but it can easily be adapted to the back end

More info can be found here on this link https://iconicwp.com/hide-stock-products-woocommerce-catalog-pages/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.