Для скрытия товаров без фото в Woocommerce можно использовать следующий код:

add_action( 'pre_get_posts', 'hide_products_without_image' ); function hide_products_without_image( $query ) { if ( $query->is_main_query() && ! is_admin() && $query->is_post_type_archive( 'product' ) ) { $tax_query = array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ); $meta_query = array( 'relation' => 'OR', array( 'key' => '_thumbnail_id', 'compare' => 'EXISTS', ), array( 'key' => '_thumbnail_id', 'compare' => 'NOT EXISTS', 'value' => '', ), ); $query->set( 'tax_query', $tax_query ); $query->set( 'meta_query', $meta_query ); } }

Вы можете добавить этот код в файл functions.php вашей темы или в плагин для настройки функционала вашего сайта.