From woocommerce-commerce
Manages WooCommerce product catalog: types, categories, tags, attributes, queries, search, related products, visibility. For programmatic product CRUD and display customization.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin woocommerce-commerceThis skill is limited to using the following tools:
**Fetch live docs**:
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Fetch live docs:
site:developer.woocommerce.com products for product documentationhttps://woocommerce.github.io/code-reference/ for class referencewoocommerce custom product type implementation for custom product types| Type | Class | Description |
|---|---|---|
| Simple | WC_Product_Simple | Single product, no options |
| Variable | WC_Product_Variable | Product with variations (size, color) |
| Variation | WC_Product_Variation | Individual variation of a variable product |
| Grouped | WC_Product_Grouped | Collection of related simple products |
| External/Affiliate | WC_Product_External | Linked to external URL |
Any product can be marked:
WC_Product (or WC_Product_Simple)woocommerce_product_type_selector filterwoocommerce_product_class filter or woocommerce_product_type_{type} class name filterWC_Product_Factory resolves a product ID to the correct class:
wc_get_product( $id ) — returns the correct WC_Product_* subclasswoocommerce_product_class filter to allow custom type resolution$product = new WC_Product_Simple();
$product->set_name( 'My Product' );
$product->set_regular_price( '29.99' );
$product->set_status( 'publish' );
$product->save();
wc_get_products( $args ) — primary query method:
type — product type(s)status — post statussku — SKU lookupcategory — category slug(s)tag — tag slug(s)limit, page, offset — paginationorderby, order — sortingmeta_key, meta_value — meta queriesreturn — 'objects' (default) or 'ids'Object-oriented query builder — same as wc_get_products() but chainable.
Taxonomy: product_cat (hierarchical)
wp_set_object_terms( $product_id, $term_ids, 'product_cat' )get_the_terms( $product_id, 'product_cat' )$product->set_category_ids( [ 12, 15 ] )Taxonomy: product_tag (non-hierarchical)
$product->set_tag_ids( [ 5, 8 ] )Taxonomy: product_type — internal, determines the product class.
Register with register_taxonomy() associated with product post type. Set show_in_rest => true for block editor and API support.
$product->set_catalog_visibility( $visibility ):
visible — shop and searchcatalog — shop onlysearch — search onlyhidden — not visible (accessible via direct URL)$product->set_stock_status( $status ):
instock, outofstock, onbackorder$product->set_image_id( $attachment_id ) — featured image$product->set_gallery_image_ids( [ $id1, $id2 ] ) — galleryWC_Product_Variableset_attributes() (mark as variation = true)WC_Product_Variation for each combinationEach variation specifies attribute values:
$variation->set_attributes( [ 'pa_color' => 'red', 'pa_size' => 'large' ] )$product->set_upsell_ids( $ids ) — upsell products$product->set_cross_sell_ids( $ids ) — cross-sells (shown in cart)woocommerce_related_products filter)wc_get_product() to load products — never new WC_Product( $id ) directlywc_get_products() for queries — not WP_Query with post_type => 'product'show_if_simple, show_if_variable classes on admin tabswc_clean() to sanitize product input dataFetch the WooCommerce product documentation and code reference for exact method signatures, query parameters, and product type registration patterns before implementing.