Title: Shipping Class By Category For Woocommerce
Author: ah72king
Published: <strong>November 5, 2024</strong>
Last modified: June 26, 2026

---

Search plugins

![](https://ps.w.org/shipping-class-by-category-for-woocommerce/assets/icon-256x256.
png?rev=3182125)

# Shipping Class By Category For Woocommerce

 By [ah72king](https://profiles.wordpress.org/ah72king/)

[Download](https://downloads.wordpress.org/plugin/shipping-class-by-category-for-woocommerce.1.3.0.zip)

 * [Details](https://wordpress.org/plugins/shipping-class-by-category-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/shipping-class-by-category-for-woocommerce/#reviews)
 * [Development](https://wordpress.org/plugins/shipping-class-by-category-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/shipping-class-by-category-for-woocommerce/)

## Description

Assign WooCommerce shipping classes to products by category, saving time and avoiding
bulk edit limitations.

### Requirements

 * WordPress 5.0 or higher
 * WooCommerce 5.0 or higher
 * PHP 7.4 or higher
 * MySQL 5.6 or higher, OR MariaDB 10.1 or higher

#### Automatic installation

Automatic installation is the easiest option — WordPress will handle the file transfer,
and you won’t need to leave your web browser. To do an automatic installation of
Shipping Class By Category For Woocommerce, log in to your WordPress dashboard, 
navigate to the Plugins menu, and click “Add New.”

In the search field type “Shipping Class By Category For Woocommerce” then click“
Search Plugins.” Once you’ve found us, you can view details about it such as the
point release, rating, and description. Most importantly, of course, you can install
it by clicking “Install Now,” and WordPress will take it from there.

#### Manual installation

Manual installation method requires downloading the Shipping Class By Category For
Woocommerce plugin and uploading it to your web server via your favorite FTP application.
The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation).

### Detail Description

#### General

Shipping Class By Category For WooCommerce allows you to assign shipping classes
to products based on their category in just a few clicks. Instead of manually editing
each product or facing the limitations of bulk editing (which often fails with large
product counts), this plugin lets you assign shipping classes efficiently, even 
for stores with thousands of products.

#### Key Features:

 * **Subcategory Support**: Optionally include subcategory products when bulk assigning
   to a parent category, with a confirmation prompt listing affected subcategories
 * **Parent Class Inheritance**: Optionally inherit shipping class from a parent
   category when a new product’s direct category has none assigned
 * **Bulk Category Assignment**: Assign shipping classes to all products within 
   a selected category
 * **AJAX Batch Processing**: Handles large product catalogs without server timeouts
 * **Automatic Assignment**: New products automatically get shipping classes based
   on their category
 * **Live Category Reassignment**: When an existing product is moved to a different
   category, its shipping class updates automatically to match the new category
 * **Custom Product Column**: Optional shipping class column in the WooCommerce 
   products table
 * **Progress Tracking**: Real-time progress bar during bulk operations
 * **Error Handling**: Robust error handling with retry mechanisms
 * **Security**: Proper nonce verification and capability checks

### Security Features

 * **Nonce Verification**: All AJAX requests are protected with WordPress nonces
 * **Capability Checks**: Only users with `manage_woocommerce` capability can perform
   operations
 * **Input Validation**: All user inputs are properly sanitized and validated
 * **SQL Injection Protection**: Uses WordPress’s `$wpdb->prepare()` for all database
   queries

### Performance Optimizations

 * **Batch Processing**: Processes products in configurable batches (default: 25
   products)
 * **Memory Management**: Sets appropriate memory limits for large operations
 * **Efficient Queries**: Uses optimized database queries to minimize server load
 * **Cache Management**: Properly clears object cache after operations
 * **Retry Logic**: Implements exponential backoff for failed requests

#### Why Use This Plugin?

WooCommerce’s built-in bulk editing feature is limited to 999 products and may cause
server crashes on low-memory setups. Shipping Class By Category For WooCommerce 
solves this issue by using batch processing through AJAX, ensuring smooth operation
even for large stores. This plugin automates the assignment process, allowing you
to apply shipping classes to entire categories, saving hours of manual work.

#### Settings

Plugin gives you an option to show the shipping class assigned to the product on
the product table in the WordPress admin panel products listing page

### Troubleshooting

### Common Issues

 1. **“WooCommerce is not active” error**
 2.  * Ensure WooCommerce is installed and activated
     * Check that WooCommerce version is 5.0 or higher
 3. **“Security check failed” error**
 4.  * Try refreshing the page and attempting the operation again
     * Ensure you’re logged in as an administrator
 5. **Slow processing**
 6.  * The plugin processes products in batches to prevent server timeouts
     * Large categories may take several minutes to process
     * Monitor the progress bar for real-time updates
 7. **Memory errors**
 8.  * The plugin automatically sets memory limits, but you may need to increase PHP
       memory limit on your server
     * Contact your hosting provider if issues persist

### Debug Mode

The plugin has its own debug flag so you can get detailed logs without flooding 
your general debug log with unrelated WordPress noise.

To enable plugin-level debug logging, add all three lines to your `wp-config.php`:

    ```
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'SCBCFW_DEBUG', true );
    ```

All three must be present and set to `true`. Removing or omitting `SCBCFW_DEBUG`
disables plugin logging even if WordPress debug mode is on.

Logs are written to `/wp-content/debug.log` and are prefixed with `[SCBCFW]` so 
they are easy to filter. Each entry includes the product ID, the category being 
checked, and the resolved shipping class slug, making it straightforward to trace
why a product received a particular class (or none at all).

Example log output when a product’s category is changed:

    ```
    [SCBCFW] Product #42: product_cat changed, resolving shipping class.
    [SCBCFW] Product #42: checking category "Category B" (term_id=5), scbcfw_shipping_class="8".
    [SCBCFW] Product #42: resolved to shipping class "freight".
    [SCBCFW] Product #42: applying shipping class "freight".
    ```

Remember to remove `SCBCFW_DEBUG` (or set it to `false`) on production sites once
you are done diagnosing.

### Support

For support, feature requests, or bug reports, please visit the [plugin support page](https://wordpress.org/support/plugin/shipping-class-by-category-for-woocommerce/).

### License

This plugin is licensed under the GPL v2 or later.

**Note**: This plugin is designed to work with WooCommerce’s standard shipping class
system. For custom shipping solutions, additional configuration may be required.

## Screenshots

[⌊Main Assignment Screen⌉⌊Main Assignment Screen⌉[

Main Assignment Screen

[⌊Settings⌉⌊Settings⌉[

Settings

## FAQ

### Q: How do I enable debug logging for this plugin?

A: Add all three lines below to your `wp-config.php`:

    ```
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'SCBCFW_DEBUG', true );
    ```

All three must be present. `SCBCFW_DEBUG` is the plugin-specific flag that keeps
plugin logs separate from general WordPress debug output. Once enabled, detailed
entries are written to `/wp-content/debug.log` with the prefix `[SCBCFW]`, showing
exactly which category and shipping class were evaluated for each product. Disable`
SCBCFW_DEBUG` (or remove it) on production sites when you are done troubleshooting.

### Q: If I move a product to a different category, does its shipping class update automatically?

A: Yes, as of version 1.3.0. When you save a product under a new category, the plugin
detects the category change and applies the shipping class assigned to the new category.
If the new category has no shipping class and the “Inherit Parent Category” setting
is enabled, the plugin walks up to the nearest parent category that has one.

### Q: Can I assign different shipping classes to individual products within a category?

A: Yes! First assign the desired shipping class to the category, then manually edit
individual products that need different shipping classes.

### Q: Can I assign shipping classes to product variations?

A: Currently, this functionality is not available. It may be added in future versions.

### Q: What happens if I have thousands of products in a category?

A: The plugin uses batch processing to handle large numbers of products efficiently.
It processes products in small batches (default: 25) to prevent server timeouts.

### Q: Is this plugin compatible with my theme?

A: Yes, this plugin works with any WordPress theme that supports WooCommerce.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Shipping Class By Category For Woocommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ ah72king ](https://profiles.wordpress.org/ah72king/)

[Translate “Shipping Class By Category For Woocommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/shipping-class-by-category-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/shipping-class-by-category-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/shipping-class-by-category-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/shipping-class-by-category-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/shipping-class-by-category-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.3.0

 * Fix: Shipping class now updates automatically when an existing product is moved
   to a different category. Previously the automatic assignment only ran on newly
   created products and was silently skipped for any update, so category reassignments
   had no effect.
 * Fix: Resolved a timing issue where WooCommerce would overwrite the newly assigned
   shipping class with the stale form value during the same save request. The plugin
   now uses a two-phase approach — resolving the correct class early in the save
   cycle and writing it after WooCommerce has finished, so the final value is always
   correct.
 * Improvement: New-product and category-change handling now share the same resolution
   logic via a single private helper, so parent-inheritance behaviour is identical
   in both cases and future changes only need to be made in one place.
 * New: Added plugin-specific debug logging. When `WP_DEBUG`, `WP_DEBUG_LOG`, and`
   SCBCFW_DEBUG` are all set to `true` in `wp-config.php`, the plugin writes step-
   by-step entries to `/wp-content/debug.log` (prefixed `[SCBCFW]`) covering category
   detection, shipping class resolution, and final assignment. See the Debug Mode
   section for details.
 * Note: Existing behavior for new products and bulk assignment is unchanged.

#### 1.2.0

 * New Feature: Subcategory support – when enabled, bulk assignment also updates
   products in subcategories that have no shipping class of their own. Subcategories
   with an existing shipping class assignment are always skipped.
 * New Feature: Confirmation prompt shown before processing, listing affected subcategory
   names, so no products are updated by surprise
 * New Feature: Parent category inheritance for new products – option to walk up
   to parent categories if a new product’s direct category has no shipping class
   assigned
 * New Feature: Hierarchical category dropdown – categories now display in parent
   child tree format (with indentation) for easier navigation in large stores
 * New Feature: Optional shipping class column in the WooCommerce product categories
   table
 * Settings: New option added to enable/disable the categories table column (disabled
   by default)
 * Settings: Two new options added to the Settings page to control subcategory and
   parent inheritance behavior (both disabled by default to preserve existing behavior)
 * Improvement: JavaScript refactored to support subcategory confirmation flow before
   batch processing begins
 * Note: All new options are opt-in and disabled by default – existing behavior 
   is unchanged unless you enable them

#### 1.1.0

 * UX Improvement: Categories are now sorted alphabetically in both the assignment
   dropdown and overview table
 * Better Organization: Makes it easier to find specific categories in large stores
 * Security Improvements: Enhanced nonce verification and input validation
 * Code Quality: Refactored code structure with proper separation of concerns
 * Documentation: Added comprehensive PHPDoc blocks and inline comments
 * Error Handling: Improved error handling and user feedback
 * Performance: Optimized database queries and batch processing
 * Standards: Updated to follow WordPress coding standards
 * Fixed JavaScript and CSS enqueuing
 * Improved batch processing stability

#### 1.0.3

Woocommerce required check added.

#### 1.0.2

JavaScript and Style CSS are enqueued.

#### 1.0.1

 * Shipping Class assignment using Batch (Ajax basis) so server timeout does not
   happen on low memory servers if there are too many products in a category.

#### 1.0.0

 * Plugin is introduced.

## Meta

 *  Version **1.3.0**
 *  Last updated **17 hours ago**
 *  Active installations **40+**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [bulk edit](https://wordpress.org/plugins/tags/bulk-edit/)[shipping class](https://wordpress.org/plugins/tags/shipping-class/)
 *  [Advanced View](https://wordpress.org/plugins/shipping-class-by-category-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/shipping-class-by-category-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/shipping-class-by-category-for-woocommerce/reviews/)

## Contributors

 *   [ ah72king ](https://profiles.wordpress.org/ah72king/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/shipping-class-by-category-for-woocommerce/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ahsandev.com/)