Скрыть все карточки товаров у которых нет картинки

Всем привет, есть такая проблема. Используя код ниже я скрыл карточки товаров, без картинки, но на главной и в похожих товарах на странице товара ничего не изменилось. Как это можно сделать?

add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $query ) {

    $query->set( 'meta_query', array( array(
       'key' => '_thumbnail_id',
       'value' => '0',
       'compare' => '>'
    )));
}

Ответы (1 шт):

Автор решения: Valerii Vasiliev

Можно сделать через событие pre_get_posts - оно будет срабатывать на все запросы на WP_Query

function custom_pre_get_products_query( $query ) {

        if( !is_admin()  && in_array ( $query->get('post_type'), array('product') )) {

                $meta_query = $query->get('meta_query');
            
                if (!is_array($meta_query)) $meta_query = [];
        
                $meta_query[] = [
                                     'key' => '_thumbnail_id',
                                     'value' => '0',
                                     'compare' => '>'
                                ];
                                
                $query->set('meta_query', $meta_query);
        }
}

add_action( 'pre_get_posts',  'custom_pre_get_products_query', 10, 2 );

Выполняем только для публичной части и проверяем наличие в запросе post_type == product (тип товаров woocoommerce)

→ Ссылка