{"id":88,"date":"2026-09-17T15:19:32","date_gmt":"2026-09-17T15:19:32","guid":{"rendered":"https:\/\/techtankholdings.com\/wordpress-plugins\/?page_id=88"},"modified":"2026-10-05T11:30:03","modified_gmt":"2026-10-05T11:30:03","slug":"product-category-shipping-for-woocommerce","status":"publish","type":"page","link":"https:\/\/techtankholdings.com\/wordpress-plugins\/product-category-shipping-for-woocommerce\/","title":{"rendered":"Product Category Shipping for WooCommerce"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"88\" class=\"elementor elementor-88\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7aea158 e-grid e-con-boxed e-con e-parent\" data-id=\"7aea158\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fff9b13 elementor-widget elementor-widget-heading\" data-id=\"fff9b13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Product Category Shipping for WooCommerce<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c33f36 elementor-widget elementor-widget-text-editor\" data-id=\"2c33f36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>WooCommerce shipping plugin that charges per product category using flat-rate or tiered-quantity rules. Selected user roles can be offered a cart-wide Free Local Pickup option alongside the configured shipping rates.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54a4285 elementor-widget elementor-widget-text-editor\" data-id=\"54a4285\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>By TechTank<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dacdfc0 e-flex e-con-boxed e-con e-parent\" data-id=\"dacdfc0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8679d25 elementor-widget elementor-widget-spacer\" data-id=\"8679d25\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9293115 e-flex e-con-boxed e-con e-parent\" data-id=\"9293115\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4b44cd6 elementor-align-right elementor-widget elementor-widget-button\" data-id=\"4b44cd6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-content\/uploads\/sites\/5\/2026\/10\/product-category-shipping.zip\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aa3e459 e-grid e-con-boxed e-con e-parent\" data-id=\"aa3e459\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c969a2 elementor-widget elementor-widget-eael-adv-tabs\" data-id=\"4c969a2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-adv-tabs.default\">\n\t\t\t\t\t        <div data-scroll-on-click=\"no\" data-scroll-speed=\"300\" id=\"eael-advance-tabs-4c969a2\" class=\"eael-advance-tabs eael-tabs-horizontal eael-tab-auto-active \" data-tabid=\"4c969a2\">\n            <div class=\"eael-tabs-nav \">\n                <ul class=\"eael-tab-inline-icon\" role=\"tablist\">\n                                            <li id=\"details\" class=\"active-default eael-tab-item-trigger eael-tab-nav-item\" aria-selected=\"true\" data-tab=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"details-tab\" aria-expanded=\"false\">\n                            \n                                                                                                                            \n                                                            <span class=\"eael-tab-title title-after-icon\" >Details<\/span>                            \n                                                    <\/li>\n                                            <li id=\"faq\" class=\"inactive eael-tab-item-trigger eael-tab-nav-item\" aria-selected=\"false\" data-tab=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"faq-tab\" aria-expanded=\"false\">\n                            \n                                                                                                                            \n                                                            <span class=\"eael-tab-title title-after-icon\" >FAQ<\/span>                            \n                                                    <\/li>\n                                            <li id=\"installation\" class=\"inactive eael-tab-item-trigger eael-tab-nav-item\" aria-selected=\"false\" data-tab=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"installation-tab\" aria-expanded=\"false\">\n                            \n                                                                                                                            \n                                                            <span class=\"eael-tab-title title-after-icon\" >Installation<\/span>                            \n                                                    <\/li>\n                                            <li id=\"development\" class=\"inactive eael-tab-item-trigger eael-tab-nav-item\" aria-selected=\"false\" data-tab=\"4\" role=\"tab\" tabindex=\"-1\" aria-controls=\"development-tab\" aria-expanded=\"false\">\n                            \n                                                                                                                            \n                                                            <span class=\"eael-tab-title title-after-icon\" >Development<\/span>                            \n                                                    <\/li>\n                    \n                                  <\/ul>\n            <\/div>\n            \n            <div class=\"eael-tabs-content\">\n\t\t        \n                    <div id=\"details-tab\" class=\"clearfix eael-tab-content-item active-default\" data-title-link=\"details-tab\">\n\t\t\t\t        <h2>Description<\/h2><p>Product Category Shipping lets WooCommerce store owners define shipping charges <strong>per product category<\/strong> instead of per order or per product. Two rule types are available: a simple <strong>Flat Rate<\/strong>, or <strong>Tiered Quantity<\/strong> brackets that unlock lower rates as cart quantities grow.<\/p><p><strong>How it works for regular customers:<\/strong> the cart is split into one shipping package per managed category. Each package gets its own rate, so customers see exactly one shipping line per category \u2014 additive, transparent, and fair.<\/p><p><strong>How it works for selected roles<\/strong> (e.g. Distributors, Wholesale accounts): the cart is not split. Customers see a single cart-wide <strong>Shipping<\/strong> total alongside a <strong>Free Local Pickup<\/strong> option. One decision covers the entire order. The total is identical to split mode \u2014 just a cleaner checkout experience for trade accounts.<\/p><p><strong>Core features<\/strong><\/p><ul><li>Per-category shipping rules \u2014 Flat Rate or Tiered Quantity, independently configured per category<\/li><li>Tiered rules support free-shipping thresholds (e.g. &#8220;free when quantity \u2265 12&#8221;)<\/li><li>Split-cart mode: one shipping line per category, additive charges<\/li><li>Combined-cart mode for selected roles: Shipping + Free Local Pickup as two cart-wide choices<\/li><li>Role diagnostics table in wp-admin showing exact role keys and user counts<\/li><li>Rate guard prevents third-party &#8220;hide other methods when free shipping applies&#8221; filters from accidentally removing the Local Pickup option<\/li><li>All calculations run locally at checkout \u2014 no server round-trips, no external API calls<\/li><li>No dependencies beyond WooCommerce 8.0+<\/li><\/ul><p><strong>Requirements<\/strong><\/p><ul><li>WordPress 6.4+<\/li><li>PHP 7.4+<\/li><li>WooCommerce 8.0+ (plugin must be active)<\/li><\/ul>                                        <\/div>\n\t\t        \n                    <div id=\"faq-tab\" class=\"clearfix eael-tab-content-item inactive\" data-title-link=\"faq-tab\">\n\t\t\t\t        <h2>FAQ<\/h2><h3>What rule types are available?<\/h3><p><strong>Flat Rate<\/strong> \u2014 a base charge for the first item, plus an optional per-additional-item charge.<\/p><p><strong>Tiered Quantity<\/strong> \u2014 unlimited min\/max quantity brackets, each with its own price or a &#8220;free&#8221; flag. Example: 1\u20135 items = $8, 6\u201311 items = $5, 12+ items = free.<\/p><h3>Can different categories use different rule types?<\/h3><p>Yes. Each category is configured independently \u2014 one can use Flat Rate, another Tiered Quantity. No conflicts.<\/p><h3>How does tiered quantity work?<\/h3><p>Quantities are counted <strong>per category<\/strong>, not per order. Exact-match tiers (e.g. &#8220;exactly 6&#8221;) take priority over range tiers. You define as many brackets as you need.<\/p><h3>What happens if a customer&#8217;s cart quantity falls outside all defined tiers?<\/h3><p>In <strong>split mode<\/strong> (default): checkout is blocked for that category until the customer adjusts quantity or you extend the top tier. In <strong>combined mode<\/strong> (trade roles): that category contributes $0 to the total, undercharging. In both cases, the fix is to set your top tier&#8217;s Max Qty to 9999.<\/p><h3>How do I enable Free Local Pickup for specific roles?<\/h3><p>Go to <strong>WooCommerce \u2192 Category Shipping \u2192 Local Pickup &amp; User Roles<\/strong> and add the desired role key(s) to the <strong>Pickup Roles<\/strong> field. Role keys are case-sensitive \u2014 use <code>Distributor<\/code>, not <code>distributor<\/code>. The diagnostics table shows you the exact keys currently in use on your store.<\/p><h3>Why aren&#8217;t my trade customers seeing Free Local Pickup?<\/h3><p>Most likely a case-sensitivity issue with the role key. The diagnostics table at the bottom of the Local Pickup admin screen shows every matching role, its exact key, and how many users are on it. Check that the key you entered matches exactly.<\/p><h3>Does the plugin work with WPML or Polylang?<\/h3><p>The plugin loads its own text domain. Place <code>.mo<\/code> translation files in <code>wp-content\/languages\/plugins\/bt-shipping-{locale}.mo<\/code>.<\/p><h3>Does this work alongside other shipping plugins?<\/h3><p>Yes \u2014 the plugin submits its own rates alongside other shipping methods. Known incompatibility: plugins that re-package the cart into new packages will cause each extra package to receive its own Shipping + Local Pickup pair. Avoid combining with cart-repackaging plugins.<\/p><h3>Will my shipping rules still work if I deactivate the plugin?<\/h3><p>No. Rates are only calculated and presented while the plugin is active. Deactivating never deletes your saved rules or settings \u2014 they reappear the moment you reactivate.<\/p>                                        <\/div>\n\t\t        \n                    <div id=\"installation-tab\" class=\"clearfix eael-tab-content-item inactive\" data-title-link=\"installation-tab\">\n\t\t\t\t        <h2>Installation<\/h2><ol><li>Upload the <code>product-category-shipping<\/code> folder to <code>\/wp-content\/plugins\/<\/code> \u2014 or install via the WordPress Plugins screen.<\/li><li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li><li>Go to <strong>WooCommerce \u2192 Settings \u2192 Shipping \u2192 Category Shipping<\/strong> and add rules for each category you manage.<\/li><li>Optionally, go to <strong>WooCommerce \u2192 Category Shipping \u2192 Local Pickup &amp; User Roles<\/strong> to configure which roles see Free Local Pickup and set custom labels.<\/li><\/ol>                                        <\/div>\n\t\t        \n                    <div id=\"development-tab\" class=\"clearfix eael-tab-content-item inactive\" data-title-link=\"development-tab\">\n\t\t\t\t        <h2><!-- obsidian --><\/h2><h2>Contributors<\/h2><p>Braxton Moody \/ TechTank Holdings, Inc.<\/p><p><!-- obsidian --><\/p><h2>Support<\/h2><p>Got something to say? Need help?<\/p><p><a class=\"external-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/product-category-shipping-for-woocommerce\/\" target=\"_blank\" rel=\"noopener nofollow\">View support forum \u2192<\/a><\/p><p>When reaching out, include your WordPress and WooCommerce versions, a description of what you expected vs. what happened, and screenshots of your rule configuration if relevant. Typical response: within 48 hours on business days.<\/p><h2>Changelog<\/h2><p><!-- obsidian --><\/p><h4><strong>1.4.5<\/strong><\/h4><ul><li>Migration bug fixed: the <code>plugins_loaded<\/code> migration hook was checking <code>pcsfw_shipping_rules === false &amp;&amp; pcsfw_shipping_rules !== false<\/code> \u2014 mutually exclusive conditions that always evaluated to false, so no data was ever migrated.<\/li><li>Corrected to check <code>pcsfw_shipping_rules === false &amp;&amp; bt_shipping_rules !== false<\/code> (old key as source).<\/li><li>Three <code>$_POST<\/code> accesses in <code>save_rules()<\/code> (<code>pcsfw_settings<\/code>, <code>rules<\/code>, <code>role_rules<\/code>) suppressed with <code>\/\/ phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized<\/code> \u2014 data is sanitised by <code>sanitize_rule_set()<\/code> before use. <code>$_POST['pcsfw_nonce']<\/code> nonce sanitisation corrected to <code>sanitize_text_field(wp_unslash(...))<\/code>.<\/li><li><code>$clear_hook<\/code> renamed <code>$pcsfw_clear_hook \u00a0<\/code>to avoid global namespace pollution.<\/li><li>Text domain reverted to <code>product-category-shipping<\/code> (the<br \/>short directory name that WordPress.org&#8217;s automated Plugin Check tool expects as the canonical domain, distinct from the plugin slug). All <code>__()<\/code> calls and header updated accordingly.<\/li><\/ul><p><!-- obsidian --><\/p><h4><strong>1.4.4<\/strong><\/h4><ul><li>Admin layout reorder: Local Pickup &amp; User Roles card moved from the top of the Category Shipping admin page to below the Selected-Role Override Rules section (better UX flow).<code><\/code><code><\/code><\/li><li><code>PCSFW_URL<\/code> and <code>PCSFW_VERSION<\/code> constants added \u2014 were undefined, causing critical PHP fatal error on admin page load.<\/li><li>All <code>bt_shipping_*<\/code> option references in the main plugin file and<br \/>shipping method class renamed to <code>pcsfw_shipping_*<\/code> for consistency.<\/li><li>Added <code>plugins_loaded\u00a0<\/code>migration hook to auto-copy saved data from old <code>bt_shipping_*<\/code> keys to <code>pcsfw_shipping_*<\/code> keys<br \/>on activation, preventing data loss when upgrading from prior versions.<\/li><\/ul><p><!-- obsidian --><\/p><h4><strong>1.4.3<\/strong><\/h4><ul><li>HPOS compatibility declared via <code>FeaturesUtil::declare_compatibility('custom_order_tables')<\/code><br \/>on <code>before_woocommerce_init<\/code> hook, silencing WooCommerce &#8220;incompatible plugins&#8221; notice on multisites with HPOS enabled.<\/li><li>Text domain corrected to <code>product-category-shipping<\/code> (dots\/numbers in domain violate WP conventions \u2014 reverted from <code>v1.4.3<\/code> and <code>product-category-shipping-v1.4.2<\/code> attempts)<code><\/code><code><\/code><\/li><li><code>BT_SHIPPING_VERSION<\/code> bumped to <code>1.4.3<\/code>.<\/li><li>readme.txt stable tag updated. 25 stray <code>\/* phpcs:ignore WordPress.WP.I18n.TextDomainMismatch *\/<\/code> comments removed \u2014 they were inside HTML template sections and rendering as visible text in the browser.<\/li><li>Class files renamed <code>class-bt-shipping-*.php<\/code> \u2192 <code>class-pcsfw-*.php<\/code>. All <code>__()<\/code> calls updated to use <code>product-category-shipping<\/code> domain throughout. Plugin verified working on WordPress multisite<br \/>with WooCommerce 7.1.2 + HPOS enabled.<\/li><\/ul><p><!-- obsidian --><\/p><h4><strong>1.4.2<\/strong><\/h4><ul><li>Fixed duplicate &#8220;Category Shipping&#8221; submenu entry under WooCommerce.<\/li><li>Fixed admin settings page rendering raw HTML as plain text (<code>esc_html()<\/code> on buffered output).<\/li><li>Removed stale root-level duplicate PHP files (<code>class-bt-shipping-*.php<\/code> at trunk root).<\/li><li>Added <code>phpcs.xml<\/code> ruleset + per-file <code>phpcs:ignore<\/code> for TextDomainMismatch false positives<br \/>(Plugin Check infers domain from versioned folder name, not the declared header).<\/li><li>Added singleton <code>get_instance()<\/code> guard to admin class.<\/li><\/ul><p><!-- obsidian --><\/p><h4><strong>1.4.1<\/strong><\/h4><ul><li>Post-review fixes: removed <code>Tested up to<\/code> from PHP header (now readme.txt only)<\/li><li>replaced inline <code>&lt;style&gt;<\/code>\/<code>&lt;script&gt;<\/code> with <code>wp_enqueue_style<\/code>\/<code>wp_enqueue_script<\/code> + external<br \/><code>admin.css<\/code>\/<code>admin.js<\/code> at plugin root<\/li><li>changed text domain to <code>product-category-shipping-for-woocommerce<\/code><br \/>(26 occurrences)<\/li><li>added <code>Requires Plugins: woocommerce<\/code> header; removed all WP.org asset files from zip.<\/li><\/ul><h4>1.4.0<\/h4><ul><li>Rebranded to &#8220;Product Category Shipping for WooCommerce&#8221;<\/li><li>Updated header fields for WordPress.org compatibility (Tested up to 7.1, WC 9.3)<\/li><li>Added <code>Requires at least<\/code>, <code>Requires PHP<\/code>, <code>WC requires at least<\/code>, <code>WC tested up to<\/code> header fields<\/li><li>Added translation infrastructure (<code>load_plugin_textdomain<\/code>, languages directory)<\/li><li>Internal: renamed main plugin file; no functional changes<\/li><\/ul><h4>1.3.0<\/h4><ul><li>Added Selected-Role Override Rules \u2014 a second, independent rule set that fully replaces the default rules for a category when the customer&#8217;s role is in <code>pickup_roles<\/code>.<\/li><\/ul><h4>1.2.1<\/h4><ul><li>Fixed role keys being lowercased by <code>sanitize_key()<\/code>, which silently dropped custom roles on every save.<\/li><li>Added role diagnostics table to the admin screen.<\/li><li>Added rate guard at priority 99999 to re-insert both combined-mode rates so a third-party &#8220;hide other methods when free shipping exists&#8221; filter cannot remove one.<\/li><\/ul><h4>1.2.0<\/h4><ul><li>Role-gated free Local Pickup with combined cart-wide rate for selected roles.<\/li><li>Fixed double-counting for products assigned to two managed categories.<\/li><li>Made shipping rate IDs unique across all categories.<\/li><\/ul><h4>1.0.4<\/h4><ul><li>Per-category rules, cart split, admin settings page.<\/li><\/ul>                                        <\/div>\n\t\t                    <\/div>\n        <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-307a307 elementor-widget elementor-widget-eael-advanced-data-table\" data-id=\"307a307\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-advanced-data-table.default\">\n\t\t\t\t\t<div class=\"ea-advanced-data-table-wrap\" data-id=\"307a307\"><div class=\"ea-advanced-data-table-wrap-inner\">\n                <table class=\"ea-advanced-data-table ea-advanced-data-table-static ea-advanced-data-table-307a307 ea-advanced-data-table-sortable\" data-id=\"307a307\"><thead><tr><th><p><br><\/p><\/th><th><\/th><\/tr><\/thead><tbody><tr><td><p>Version<\/p><\/td><td><p>1.4.5<\/p><\/td><\/tr><tr><td><p>&nbsp;Requires WordPress&nbsp;<\/p><\/td><td><p>6.4+<\/p><\/td><\/tr><tr><td><p>Requires PHP<\/p><\/td><td><p>7.4+<\/p><\/td><\/tr><tr><td><p>Requires WooCommerce&nbsp;<\/p><\/td><td><p>8.0+<\/p><\/td><\/tr><tr><td><p>Tested up to WooCommerce&nbsp;<\/p><\/td><td><p>9.3<\/p><\/td><\/tr><\/tbody><\/table>\n            <\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3126eef e-flex e-con-boxed e-con e-parent\" data-id=\"3126eef\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c753798 elementor-widget elementor-widget-text-editor\" data-id=\"c753798\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><!-- obsidian --><\/p><p><strong>Tags:<\/strong> <a class=\"external-link\" href=\"https:\/\/wordpress.org\/plugins\/tags\/woocommerce-shipping\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"https:\/\/wordpress.org\/plugins\/tags\/woocommerce-shipping\/\" data-tooltip-position=\"top\">woocommerce shipping<\/a>, <a class=\"external-link\" href=\"https:\/\/wordpress.org\/plugins\/tags\/category-shipping\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"https:\/\/wordpress.org\/plugins\/tags\/category-shipping\/\" data-tooltip-position=\"top\">category shipping<\/a>, <a class=\"external-link\" href=\"https:\/\/wordpress.org\/plugins\/tags\/flat-rate-shipping\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"https:\/\/wordpress.org\/plugins\/tags\/flat-rate-shipping\/\" data-tooltip-position=\"top\">flat rate shipping<\/a>, <a class=\"external-link\" href=\"https:\/\/wordpress.org\/plugins\/tags\/tiered-shipping\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"https:\/\/wordpress.org\/plugins\/tags\/tiered-shipping\/\" data-tooltip-position=\"top\">tiered shipping<\/a>, <a class=\"external-link\" href=\"https:\/\/wordpress.org\/plugins\/tags\/local-pickup\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"https:\/\/wordpress.org\/plugins\/tags\/local-pickup\/\" data-tooltip-position=\"top\">local pickup<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a60c41d e-flex e-con-boxed e-con e-parent\" data-id=\"a60c41d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ab4e4d5 elementor-widget elementor-widget-spacer\" data-id=\"ab4e4d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Product Category Shipping for WooCommerce WooCommerce shipping plugin that charges per product category using flat-rate or tiered-quantity rules. Selected user roles can be offered a cart-wide Free Local Pickup option alongside the configured shipping rates. By TechTank Download Details FAQ Installation Development Description Product Category Shipping lets WooCommerce store owners define shipping charges per product [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-88","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/pages\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":95,"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/pages\/88\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/pages\/88\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/techtankholdings.com\/wordpress-plugins\/wp-json\/wp\/v2\/media?parent=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}