BACK TO DIRECTORY

W3S API Extension for Woocommerce

by w3specialists.com

0.0
(0 ratings)

Enhances your store’s REST API by adding powerful, flexible endpoints.
Stay tuned more are coming!

Add or Remove a Single Category

Easily append or remove one category at a time—by numeric ID or slug—using simple POST/PUT/PATCH or DELETE requests to
/wp-json/wc/v3/products/{product_id}/categories/{identifier}

Batch Manage Multiple Categories

In a single call, add or remove multiple categories at once via JSON payloads to
/wp-json/wc/v3/products/{product_id}/categories
Supply an array of IDs or slugs under the “categories” key to update your product’s category list in bulk.

Automatic Slug Resolution
Pass slugs like “summer-collection” — or non-Latin slugs such as “ανδρικά” — and the plugin will resolve them to the correct WooCommerce term IDs on the fly—no extra lookups required.

Non-Destructive Updates
Neither endpoint touches other product data. Categories are merged or pruned transparently without overwriting prices, stock, attributes, or any other fields.

Plays Well With WooCommerce
Changes are saved through the WooCommerce product API, so product caches are refreshed, woocommerce_update_product runs, product.updated webhooks fire, and the store’s default category is applied if a product is left without one.

Built-In Validation & Security

Sanitization of all inputs (IDs and slugs) to guard against bad data; the batch payload is validated against a schema.

Permission checks mirror WooCommerce core: only users allowed to edit the product (Shop Manager, Admin) can modify its categories.

Clear, standardized error codes (w3s_api_extension_invalid_product and w3s_api_extension_invalid_product_category) for consistent API responses. Unknown category IDs and slugs both return 404.

W3S API Extension for WooCommerce installs alongside the core WooCommerce REST API, requires no additional configuration, and works out of the box.

Endpoints Documentation

Product Categories

  • Add a single category

    • Type: HTTP request
    • Endpoint: `/wp-json/wc/v3/products/{product_id}/categories/{identifier}`
    • Methods: POST, PUT, PATCH
    • Examples:
      curl -X PUT https://example.com/wp-json/wc/v3/products/125/categories/18 \
      -u consumer_key:consumer_secret
      curl -X PUT https://example.com/wp-json/wc/v3/products/125/categories/my-category \
      -u consumer_key:consumer_secret
  • Remove a single category

    • Type: HTTP request
    • Endpoint: `/wp-json/wc/v3/products/{product_id}/categories/{identifier}`
    • Methods: DELETE
    • Examples:
      curl -X DELETE https://example.com/wp-json/wc/v3/products/125/categories/18 \
      -u consumer_key:consumer_secret
      curl -X DELETE https://example.com/wp-json/wc/v3/products/125/categories/my-category \
      -u consumer_key:consumer_secret
  • Batch add categories

    • Type: HTTP request
    • Endpoint: `/wp-json/wc/v3/products/{product_id}/categories`
    • Methods: POST, PUT, PATCH
    • Example:
      curl -X PUT https://example.com/wp-json/wc/v3/products/125/categories \
      -u consumer_key:consumer_secret \
      -H “Content-Type: application/json” \
      -d ‘{“categories”: [1,”my-category”,3,”my-category-1″]}’
  • Batch delete categories

    • Type: HTTP request
    • Endpoint: `/wp-json/wc/v3/products/{product_id}/categories`
    • Methods: DELETE
    • Example:
      curl -X DELETE https://example.com/wp-json/wc/v3/products/125/categories \
      -u consumer_key:consumer_secret \
      -H “Content-Type: application/json” \
      -d ‘{“categories”: [1,”my-category”,3,”my-category-1″]}’

Extra notes

  • Strings that include only digits are parsed as IDs, everything else as a slug. Slugs may contain any characters except “/”; URL-encode them when needed (the batch endpoint takes them in the JSON body, so no encoding is required there).
  • The batch endpoints also accept form-encoded `categories[]=…` parameters or a comma-separated string. An empty or missing list returns a standard 400 `rest_missing_callback_param`/`rest_invalid_param` error.
  • Removing a product’s last category assigns the store’s default category (“Uncategorized”), exactly as WooCommerce does in the admin.
  • Every response is the product’s resulting list of category terms.

Plugin Details

Active Installs
0
Total Downloads
475
Version
1.1.0
Requires WP
6.7
Requires PHP
7.4
Tested Up To
7.1
Added
2025-06-02
Last Updated
2026-08-20 10:30am GMT

Ratings

5
0
4
0
3
0
2
0
1
0