{"id":311194,"date":"2026-05-17T21:36:20","date_gmt":"2026-05-17T21:36:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wc-dynamic-checkout-fields-mrj\/"},"modified":"2026-05-17T21:35:55","modified_gmt":"2026-05-17T21:35:55","slug":"mr-j-dev-dynamic-checkout-fields","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mr-j-dev-dynamic-checkout-fields\/","author":20617242,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Mr. J Dev Dynamic Checkout Fields","header_author":"Mr. J","header_description":"Add conditional custom fields to the WooCommerce checkout based on cart contents, cart value, or shipping country. Saves data to order meta and displays it in the admin.","assets_banners_color":"032854","last_updated":"2026-05-17 21:35:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ajay2188\/mr-j-dev-dynamic-checkout-fields","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"iamdeveloperajay","date":"2026-05-17 21:35:55"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3534884,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3534894,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3534874,"resolution":"1","location":"assets","locale":"","width":1884,"height":912}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3148,130308,2010,724,286],"plugin_category":[45],"plugin_contributors":[263290,263291],"plugin_business_model":[],"class_list":["post-311194","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-conditional-logic","plugin_tags-custom-fields","plugin_tags-validation","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-ajay2188","plugin_contributors-iamdeveloperajay","plugin_committers-iamdeveloperajay"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mr-j-dev-dynamic-checkout-fields\/assets\/icon-256x256.png?rev=3534884","icon_2x":"https:\/\/ps.w.org\/mr-j-dev-dynamic-checkout-fields\/assets\/icon-256x256.png?rev=3534884","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mr-j-dev-dynamic-checkout-fields\/assets\/screenshot-1.png?rev=3534874","caption":""}],"raw_content":"<!--section=description-->\n<p>Mr. J Dev Dynamic Checkout Fields lets store owners add fully configurable custom fields to the WooCommerce checkout page. Fields can be shown conditionally based on cart total, shipping country, or product presence \u2014 all managed via a clean split-panel admin UI without writing any code.<\/p>\n\n<p><strong>Field Types:<\/strong><\/p>\n\n<ul>\n<li>Text \u2014 single-line text input<\/li>\n<li>Textarea \u2014 multi-line text area (4 rows, resizable)<\/li>\n<li>Dropdown \u2014 select from a list of predefined options (you define one option per line)<\/li>\n<li>Checkbox \u2014 a simple yes\/no toggle<\/li>\n<\/ul>\n\n<p><strong>Conditional Display (show field only when):<\/strong><\/p>\n\n<ul>\n<li>Always \u2014 field is always visible at checkout<\/li>\n<li>Cart total is greater than \u20b9X \u2014 e.g. show a \"Gift wrapping note\" field only for orders above \u20b9500<\/li>\n<li>Shipping country equals \u2014 show field only for specific countries (2-letter ISO code, e.g. IN, US, GB)<\/li>\n<li>Product ID is in cart \u2014 show a field only when a specific product is being purchased<\/li>\n<\/ul>\n\n<p>Note: Conditions apply to the classic shortcode checkout only. In the block checkout, all registered fields are always shown.<\/p>\n\n<p><strong>Validation:<\/strong><\/p>\n\n<ul>\n<li>Mark any field as required \u2014 WooCommerce will block checkout if left empty<\/li>\n<li>Optional regex pattern \u2014 e.g. <code>^[0-9]{10}$<\/code> to enforce a 10-digit phone format<\/li>\n<li>Regex is applied to Text fields only; Checkbox and Dropdown use WooCommerce's built-in validation<\/li>\n<\/ul>\n\n<p><strong>Checkout Compatibility:<\/strong><\/p>\n\n<ul>\n<li>Classic Checkout (shortcode <code>[woocommerce_checkout]<\/code>) \u2014 full support including conditions<\/li>\n<li>Block Checkout (WooCommerce 8.9+) \u2014 fields registered via the Additional Checkout Fields API and appear in the \"Order\" section of the block checkout automatically. Textarea type falls back to a single-line text field in block mode (the Block API has no native textarea type)<\/li>\n<\/ul>\n\n<p><strong>Data Handling:<\/strong><\/p>\n\n<ul>\n<li>Field values are saved as order meta on checkout submit<\/li>\n<li>Displayed in the admin order detail page (below billing address)<\/li>\n<li>Included in WooCommerce order emails \u2014 both HTML and plain-text formats<\/li>\n<\/ul>\n\n<p><strong>Admin UI (split-panel layout):<\/strong><\/p>\n\n<ul>\n<li>Left panel \u2014 lists all saved fields as cards with type badge, condition summary, and required indicator<\/li>\n<li>Right panel \u2014 inline create \/ edit form; clicking a card loads it for editing<\/li>\n<li>Fields are created, updated, and deleted without leaving the page<\/li>\n<li>The form auto-shows\/hides the Dropdown Options textarea and Condition Value input based on your selections<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<ol>\n<li>Go to <strong>WooCommerce \u2192 Checkout Fields<\/strong>.<\/li>\n<li>Click <strong>Add New Field<\/strong>.<\/li>\n<li>Fill in:\n\n<ul>\n<li><strong>Field ID<\/strong> \u2014 a unique slug (lowercase, underscores only), e.g. <code>pan_number<\/code><\/li>\n<li><strong>Label<\/strong> \u2014 what customers see at checkout, e.g. \"PAN Number\"<\/li>\n<li><strong>Field Type<\/strong> \u2014 Text, Textarea, Dropdown, or Checkbox<\/li>\n<li><strong>Dropdown Options<\/strong> \u2014 one option per line (only shown when type is Dropdown)<\/li>\n<li><strong>Required<\/strong> \u2014 tick to block checkout if the field is left empty<\/li>\n<li><strong>Show When<\/strong> \u2014 the condition that must be true for the field to appear<\/li>\n<li><strong>Condition Value<\/strong> \u2014 the value for your condition (amount \/ country code \/ product ID)<\/li>\n<li><strong>Validation Regex<\/strong> \u2014 optional regex for Text and Textarea fields<\/li>\n<\/ul><\/li>\n<li>Click <strong>Save Field<\/strong>.<\/li>\n<\/ol>\n\n<p>The field will appear on the checkout page whenever its condition is met. Submitted values are stored with the order and visible in the admin order screen and in all WooCommerce order emails.<\/p>\n\n<h3>Condition Examples<\/h3>\n\n<p><strong>Gift message field for large orders:<\/strong>\n* Type: Text | Show When: Cart total &gt; | Value: 1000<\/p>\n\n<p><strong>PAN card field for Indian customers only:<\/strong>\n* Type: Text | Show When: Shipping country = | Value: IN\n* Validation Regex: <code>^[A-Z]{5}[0-9]{4}[A-Z]{1}$<\/code><\/p>\n\n<p><strong>Delivery preference for a specific product:<\/strong>\n* Type: Dropdown | Show When: Product ID in cart | Value: 42\n* Options: Morning&#010;Afternoon&#010;Evening<\/p>\n\n<p><strong>Simple gift wrap option:<\/strong>\n* Type: Checkbox | Show When: Always | Required: No<\/p>\n\n<h3>Block Checkout Notes<\/h3>\n\n<p>To use with the WooCommerce Block Checkout:<\/p>\n\n<ul>\n<li>WooCommerce 8.9 or newer is required<\/li>\n<li>Fields are registered in the \"Order\" section of the block checkout<\/li>\n<li>Conditional display is not supported in block mode \u2014 all your fields will always show<\/li>\n<li>Field values are saved and displayed in orders automatically by WooCommerce<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mr-j-dev-dynamic-checkout-fields<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Checkout Fields<\/strong> to create and manage your fields.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20have%20multiple%20fields%3F\"><h3>Can I have multiple fields?<\/h3><\/dt>\n<dd><p>Yes \u2014 there is no limit. Each field needs a unique ID.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does it work with HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. Field values are saved via <code>update_post_meta<\/code> \/ the blocks API, both of which are compatible with HPOS.<\/p><\/dd>\n<dt id=\"can%20i%20edit%20a%20field%20after%20creating%20it%3F\"><h3>Can I edit a field after creating it?<\/h3><\/dt>\n<dd><p>Yes. Click any field card in the left panel to load it into the edit form. Change the details and click <strong>Update Field<\/strong>.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20delete%20a%20field%3F\"><h3>What happens if I delete a field?<\/h3><\/dt>\n<dd><p>The field definition is removed and it will no longer appear at checkout. Existing order meta from past orders is not deleted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Split-panel admin UI with inline create\/edit.<\/li>\n<li>Text, Textarea, Dropdown, and Checkbox field types.<\/li>\n<li>Conditional display: always, cart total, shipping country, product in cart.<\/li>\n<li>Required field validation and regex pattern support (Text and Textarea).<\/li>\n<li>Classic checkout hooks (woocommerce_after_order_notes + fallback).<\/li>\n<li>Block Checkout support via Additional Checkout Fields API (WC 8.9+) \u2014 Textarea falls back to text in block mode.<\/li>\n<li>Order meta storage, admin order display, and email integration.<\/li>\n<\/ul>","raw_excerpt":"Add custom fields to the WooCommerce checkout based on cart contents, value, or country. Saves data to order meta and displays it in the admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311194"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/iamdeveloperajay"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311194"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311194"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311194"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311194"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311194"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}