{"id":301804,"date":"2026-04-30T14:39:08","date_gmt":"2026-04-30T14:39:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/list-column-required-for-gravity-forms\/"},"modified":"2026-05-03T19:47:38","modified_gmt":"2026-05-03T19:47:38","slug":"list-column-required-for-gravity-forms","status":"publish","type":"plugin","link":"https:\/\/fao.wordpress.org\/plugins\/list-column-required-for-gravity-forms\/","author":15471416,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.0","stable_tag":"1.2.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"List Column Required for Gravity Forms","header_author":"izzygld","header_description":"Adds per-column required validation to Gravity Forms List fields with multiple columns. Mark individual columns as required right in the form editor.","assets_banners_color":"13536c","last_updated":"2026-05-03 19:47:38","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/github.com\/izzygld","header_plugin_uri":"https:\/\/github.com\/izzygld\/list-column-required-for-gravity-forms","header_author_uri":"https:\/\/github.com\/izzygld","rating":0,"author_block_rating":0,"active_installs":0,"downloads":103,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"izzygld","date":"2026-04-30 14:39:44"},"1.1.1":{"tag":"1.1.1","author":"izzygld","date":"2026-04-30 15:05:01"},"1.1.2":{"tag":"1.1.2","author":"izzygld","date":"2026-04-30 15:08:47"},"1.2.0":{"tag":"1.2.0","author":"izzygld","date":"2026-05-03 19:47:38"}},"upgrade_notice":{"1.2.0":"<p>Error highlighting is now per-cell instead of per-field \u2014 only the actual empty required cells get the red border. No action required, no breaking changes.<\/p>","1.1.2":"<p>Maintenance release. Safe to upgrade \u2014 no functional changes.<\/p>","1.1.0":"<p>Adds field-label asterisk + &quot;indicates required fields&quot; legend when any column is required, for better accessibility and consistency with native GF required fields.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519665,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519665,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3519665,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3519665,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1","1.1.2","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3519665,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3519665,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Form editor showing the per-column \"Required\" checkbox","2":"Front-end form with required column asterisk indicators"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[157585,1655,33613,261557,724],"plugin_category":[],"plugin_contributors":[260094],"plugin_business_model":[],"class_list":["post-301804","plugin","type-plugin","status-publish","hentry","plugin_tags-form-editor","plugin_tags-gravity-forms","plugin_tags-list-field","plugin_tags-required-columns","plugin_tags-validation","plugin_contributors-izzygld","plugin_committers-izzygld"],"banners":{"banner":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/banner-772x250.png?rev=3519665","banner_2x":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/banner-1544x500.png?rev=3519665","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/icon-128x128.png?rev=3519665","icon_2x":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/icon-256x256.png?rev=3519665","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/screenshot-1.png?rev=3519665","caption":"Form editor showing the per-column \"Required\" checkbox"},{"src":"https:\/\/ps.w.org\/list-column-required-for-gravity-forms\/assets\/screenshot-2.png?rev=3519665","caption":"Front-end form with required column asterisk indicators"}],"raw_content":"<!--section=description-->\n<p><strong>List Column Required for Gravity Forms<\/strong> lets you mark individual columns as <strong>required<\/strong> in multi-column List fields \u2014 something Gravity Forms doesn't support out of the box.<\/p>\n\n<p>By default, Gravity Forms only allows you to make the entire List field required (meaning at least one row must be filled). This plugin goes further: you can choose <strong>which columns<\/strong> within each row must be filled in before the form can be submitted.<\/p>\n\n<h4>The Problem<\/h4>\n\n<p>When using the Gravity Forms <strong>List<\/strong> field with \"Enable multiple columns\" turned on, there's no way to require specific columns. You can only require the entire field, which passes as long as <em>any<\/em> cell has a value \u2014 even if critical columns like \"Email\" or \"Name\" are left blank.<\/p>\n\n<h4>The Solution<\/h4>\n\n<p>This plugin adds a small <strong>\"Required\"<\/strong> checkbox next to each column in the form editor. Check it, and that column becomes required \u2014 with server-side validation, front-end asterisk indicators, and accessible <code>aria-required<\/code> attributes.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Per-Column Required<\/strong> \u2014 Mark individual columns as required independently<\/li>\n<li><strong>Server-Side Validation<\/strong> \u2014 Required columns are enforced on form submission<\/li>\n<li><strong>Front-End Indicators<\/strong> \u2014 Red asterisks on required column headers, matching GF native styling<\/li>\n<li><strong>Accessibility<\/strong> \u2014 Adds <code>aria-required=\"true\"<\/code> to required column inputs<\/li>\n<li><strong>Auto-Require All<\/strong> \u2014 Toggling the field-level \"Required\" rule ON automatically marks all columns required<\/li>\n<li><strong>Smart Row Handling<\/strong> \u2014 Blank extra rows are skipped; partially filled rows enforce required columns<\/li>\n<li><strong>Zero Configuration<\/strong> \u2014 No settings pages; works at the field level out of the box<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Edit any form with a multi-column List field<\/li>\n<li>Check the \"Required\" checkbox next to individual columns in the form editor<\/li>\n<li>Save the form \u2014 required columns are enforced on submission<\/li>\n<\/ol>\n\n<h4>Validation Logic<\/h4>\n\n<ul>\n<li><strong>Row with some data<\/strong> \u2192 all required columns in that row must be filled<\/li>\n<li><strong>All rows empty<\/strong> \u2192 the first row's required columns are enforced<\/li>\n<li><strong>Extra blank rows<\/strong> \u2192 skipped (user added a row but didn't start filling it)<\/li>\n<li><strong>Non-column List fields<\/strong> \u2192 completely unaffected<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>list-column-required-for-gravity-forms<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Edit any form with a List field \u2192 enable multiple columns \u2192 check \"Required\" on the columns you want<\/li>\n<\/ol>\n\n<p>No configuration pages or global settings needed.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20gravity%20forms%3F\"><h3>Does this require Gravity Forms?<\/h3><\/dt>\n<dd><p>Yes. Gravity Forms 2.5 or higher must be installed and activated.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20single-column%20list%20fields%3F\"><h3>Does it work with single-column List fields?<\/h3><\/dt>\n<dd><p>No \u2014 single-column List fields don't have individual columns to mark as required. Use the standard field-level \"Required\" setting for those.<\/p><\/dd>\n<dt id=\"where%20is%20the%20%22required%22%20checkbox%3F\"><h3>Where is the \"Required\" checkbox?<\/h3><\/dt>\n<dd><p>In the form editor, click on a List field with multiple columns enabled. Each column in the \"Columns\" section will have a \"Required\" checkbox next to it.<\/p><\/dd>\n<dt id=\"does%20it%20create%20any%20database%20tables%3F\"><h3>Does it create any database tables?<\/h3><\/dt>\n<dd><p>No. Column required state is stored in the existing form JSON as an <code>isColumnRequired<\/code> flag on each column choice object.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Cell-level error highlighting: only the specific empty required cells in a List field now show the red error border, instead of every cell in the field.<\/li>\n<li>Accessibility: <code>aria-invalid=\"true\"<\/code> is now set only on the failing cells (was previously a blanket effect).<\/li>\n<li>New CSS hooks for theming: required cells get <code>lcr-gf-required-cell<\/code> and <code>data-lcr-col=\"Column Name\"<\/code>; failing cells additionally get <code>lcr-gf-cell-error<\/code>.<\/li>\n<li>Subtle visual marker on required-but-currently-valid cells (inset border on the left edge) inside the GF framework theme.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Maintenance release: added automated WordPress.org SVN deployment workflow and official plugin assets (icon, banner, screenshots). No functional changes from 1.1.0.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Skipped (release-tooling test).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Accessibility + consistency: when any column is marked required (but the field-level \"Required\" is off), the field label now shows the standard asterisk and the form displays the \"* indicates required fields\" legend at the top \u2014 matching how GF natively signals required fields. Validation behavior is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Per-column required checkboxes in form editor<\/li>\n<li>Server-side validation for required columns<\/li>\n<li>Front-end asterisk indicators and aria-required attributes<\/li>\n<li>Smart row handling (skip blank extra rows)<\/li>\n<li>Auto-require all columns when field-level required is toggled ON<\/li>\n<\/ul>","raw_excerpt":"Per-column required validation for Gravity Forms List fields \u2014 mark individual columns as required right in the form editor.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/301804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=301804"}],"author":[{"embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/izzygld"}],"wp:attachment":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=301804"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=301804"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=301804"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=301804"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=301804"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=301804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}