{"id":298640,"date":"2026-04-28T19:17:06","date_gmt":"2026-04-28T19:17:06","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cda-city-shipping-for-woocommerce\/"},"modified":"2026-04-28T19:16:00","modified_gmt":"2026-04-28T19:16:00","slug":"cda-city-shipping-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/cda-city-shipping-for-woocommerce\/","author":23476165,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.3","stable_tag":"1.0.3","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"CDA City Shipping for WooCommerce","header_author":"Chameleon Digital Agency","header_description":"Define cities and shipping fees in the admin. Checkout uses city dropdowns; shipping cost follows the selected shipping city.","assets_banners_color":"c2d1d4","last_updated":"2026-04-28 19:16:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":76,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"chameleondigital","date":"2026-04-28 19:16:00"}},"upgrade_notice":{"1.0.3":"<p>Main file and package names aligned with the plugin directory slug.<\/p>","1.0.2":"<p>Documentation and security hardening for directory review.<\/p>","1.0.1":"<p>Maintenance and compatibility improvements.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3517759,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3517759,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"City shipping settings under WooCommerce.","2":"City dropdowns on checkout (when multiple cities are configured)."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3148,13827,888,3546,286],"plugin_category":[45],"plugin_contributors":[261313],"plugin_business_model":[],"class_list":["post-298640","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-delivery","plugin_tags-e-commerce","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-chameleondigital","plugin_committers-chameleondigital"],"banners":{"banner":"https:\/\/ps.w.org\/cda-city-shipping-for-woocommerce\/assets\/banner-772x250.png?rev=3517759","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cda-city-shipping-for-woocommerce\/assets\/icon-256x256.png?rev=3517759","icon_2x":"https:\/\/ps.w.org\/cda-city-shipping-for-woocommerce\/assets\/icon-256x256.png?rev=3517759","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>City Shipping for WooCommerce helps stores that charge different delivery fees by city.<\/p>\n\n<ul>\n<li><strong>Admin<\/strong> \u2014 Under WooCommerce \u2192 City shipping, add cities and a fee for each.<\/li>\n<li><strong>Checkout<\/strong> \u2014 When more than one city is configured, billing and shipping city fields become dropdowns so customers pick a listed city.<\/li>\n<li><strong>Shipping<\/strong> \u2014 Enable <strong>City based shipping<\/strong> in WooCommerce \u2192 Settings \u2192 Shipping (your zone). The rate matches the customer\u2019s shipping city (or billing city when shipping to the same address).<\/li>\n<li><strong>WPML<\/strong> \u2014 City labels can be translated in WPML String Translation while order values stay consistent.<\/li>\n<li><strong>HPOS<\/strong> \u2014 Declares compatibility with WooCommerce custom order tables (HPOS).<\/li>\n<\/ul>\n\n<p>Requires <strong>WooCommerce<\/strong> to be installed and active (WordPress 6.5+ can enforce this via the plugin dependency header).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cda-city-shipping-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install from a zip named <code>cda-city-shipping-for-woocommerce.zip<\/code> that contains that folder) or use the WordPress Plugins screen.<\/li>\n<li>Activate <strong>City Shipping for WooCommerce<\/strong> through the Plugins menu.<\/li>\n<li>Install and activate <strong>WooCommerce<\/strong> if it is not already.<\/li>\n<li>Go to <strong>WooCommerce \u2192 City shipping<\/strong> and add your cities and fees.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Shipping<\/strong>, open your zone, and add the <strong>City based shipping<\/strong> method.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20set%20the%20delivery%20price%20for%20each%20city%3F\"><h3>How do I set the delivery price for each city?<\/h3><\/dt>\n<dd><p>Add one row per city under <strong>WooCommerce \u2192 City shipping<\/strong> (city name and fee). Then add <strong>City based shipping<\/strong> to your shipping zone (<strong>WooCommerce \u2192 Settings \u2192 Shipping<\/strong>). At checkout, the customer\u2019s shipping city (or billing city when not shipping elsewhere) must match a configured row; the plugin uses that row\u2019s fee for the City based shipping rate.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20checkout%20block%3F\"><h3>Does this work with the checkout block?<\/h3><\/dt>\n<dd><p>The plugin targets the classic WooCommerce checkout fields API. Test your checkout experience (shortcode vs block) before going live.<\/p><\/dd>\n<dt id=\"how%20do%20i%20translate%20city%20names%3F\"><h3>How do I translate city names?<\/h3><\/dt>\n<dd><p>With WPML active, register strings under String Translation for the <code>cda-city-shipping-for-woocommerce<\/code> context.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Rename the main plugin file to <code>cda-city-shipping-for-woocommerce.php<\/code> to match the WordPress.org plugin slug (use zip <code>cda-city-shipping-for-woocommerce.zip<\/code> and top-level folder <code>cda-city-shipping-for-woocommerce<\/code> when packaging).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Readme: remove template FAQ; add end-user FAQ for configuring cities and fees.<\/li>\n<li>Security: verify WooCommerce checkout AJAX \/ submit nonces before reading checkout POST; restrict admin save to the City shipping screen.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Plugin Check and WordPress.org readiness (textdomain, admin scripts, security-related PHPCS notes, readme).<\/li>\n<li>Add readme.txt, languages template (POT), uninstall handler, and directory index files.<\/li>\n<li>Fix checkout validation callback argument order.<\/li>\n<li>Improve cheque\/check payment zero-shipping behavior with shipping cache invalidation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Set shipping fees per city, show city dropdowns at checkout, and ship with a dedicated WooCommerce shipping method.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298640"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/chameleondigital"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298640"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298640"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298640"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298640"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298640"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}