Wprowadzenie
Cześć wszystkim! Dzisiaj pokażę, jak wylistować wszystkie produkty z określonym atrybutem koloru jako wariant w WordPressie, korzystając z MySQL. Poniżej znajduje się zapytanie SQL, które umożliwi nam uzyskanie potrzebnych danych.
Zapytanie MySQL
Poniższe zapytanie wylistuje wszystkie produkty w WooCommerce, które mają atrybut koloru skonfigurowany jako wariant:
SELECT DISTINCT p.ID, p.post_title
FROM wp_posts p
INNER JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND pm.meta_key = '_product_attributes'
AND pm.meta_value LIKE '%"pa_kolor";%'
AND pm.meta_value LIKE '%"is_variation";i:1;%'
AND pm.meta_value LIKE '%"pa_kolor";a:%:"is_variation";i:1;%';
Zapytanie to wykonuje następujące kroki:
- SELECT DISTINCT p.ID, p.post_title: Wybiera unikalne identyfikatory i tytuły postów z tabeli
wp_posts
. - INNER JOIN wp_postmeta pm ON p.ID = pm.post_id: Łączy tabelę
wp_posts
z tabeląwp_postmeta
na podstawieID
postu. - WHERE p.post_type = ‘product’: Filtruje wyniki, aby uzyskać tylko te posty, które są produktami.
- AND p.post_status = ‘publish’: Filtruje wyniki, aby uzyskać tylko opublikowane produkty.
- AND pm.meta_key = ‘_product_attributes’: Filtruje wyniki, aby uzyskać tylko te meta dane, które są atrybutami produktu.
- AND pm.meta_value LIKE ‘%”pa_kolor”;%’: Filtruje wyniki, aby uzyskać tylko te produkty, które mają atrybut koloru.
- AND pm.meta_value LIKE ‘%”is_variation”;i:1;%’: Filtruje wyniki, aby uzyskać tylko te produkty, które mają atrybut koloru skonfigurowany jako wariant.
- AND pm.meta_value LIKE ‘%”pa_kolor”;a:%:”is_variation”;i:1;%’;: Dodatkowo filtruje wyniki, aby upewnić się, że atrybut koloru jest wariantem.
Dzięki temu zapytaniu otrzymamy listę produktów, które mają atrybut koloru skonfigurowany jako wariant, wraz z ich ID i tytułami.
Podsumowanie
To zapytanie jest skutecznym sposobem na wylistowanie produktów z określonym atrybutem koloru jako wariant w WooCommerce. Jeśli masz jakiekolwiek pytania lub potrzebujesz dodatkowej pomocy, daj znać!