{"id":343562,"date":"2026-07-28T04:28:18","date_gmt":"2026-07-28T04:28:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dynamic-fields-builder\/"},"modified":"2026-08-04T10:14:06","modified_gmt":"2026-08-04T10:14:06","slug":"massoftind-field-builder","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/massoftind-field-builder\/","author":23538662,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.9.65","stable_tag":"1.9.65","tested":"7.0.2","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Massoftind Field Builder","header_author":"Mass Software Solutions","header_description":"A lightweight, modular custom fields builder with modern UI, AJAX interactions, and clean architecture.","assets_banners_color":"e5f0fb","last_updated":"2026-08-04 10:14:06","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/masssoftwaresolutions.com\/","header_plugin_uri":"","header_author_uri":"https:\/\/masssoftwaresolutions.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":244,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.58":{"tag":"1.3.58","author":"sandipbiswas123","date":"2026-07-28 04:41:19"},"1.3.59":{"tag":"1.3.59","author":"sandipbiswas123","date":"2026-07-28 08:02:18"},"1.3.61":{"tag":"1.3.61","author":"sandipbiswas123","date":"2026-07-29 05:50:22"},"1.9.19":{"tag":"1.9.19","author":"sandipbiswas123","date":"2026-07-31 12:46:11"},"1.9.36":{"tag":"1.9.36","author":"sandipbiswas123","date":"2026-08-03 10:38:40"},"1.9.5":{"tag":"1.9.5","author":"sandipbiswas123","date":"2026-07-31 09:46:01"},"1.9.65":{"tag":"1.9.65","author":"sandipbiswas123","date":"2026-08-04 10:14:06"}},"upgrade_notice":{"1.9.5":"<p>Stable tag aligned with plugin version; gallery Image Array return format; video walkthrough link.<\/p>","1.6.0":"<p>Adds Layout Blocks for composable page sections, portable flexible-layout JSON import, and get_row_layout() compatibility.<\/p>","1.5.0":"<p>Adds migration helpers: legacy meta read fallback, Tools migration, and Settings toggles for template compatibility.<\/p>","1.3.44":"<p>Adds native qTranslate-X \/ qTranslate-XT support for multilingual field values.<\/p>","1.3.43":"<p>WordPress.org-first packaging: safer readme tags and official plugin information flow.<\/p>","1.3.42":"<p>Plugin Check warning fixes for developer code generation and field group ordering.<\/p>","1.3.41":"<p>Plugin Check error fixes; gallery libraries bundled locally.<\/p>","1.3.40":"<p>WordPress.org submission package; requires WordPress 6.2+.<\/p>","1.3.39":"<p>Developer Panel conditional-logic template examples for nested fields.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3625359,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3625359,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3625359,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3625359,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.58","1.3.59","1.3.61","1.9.19","1.9.36","1.9.5","1.9.65"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3625369,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3625369,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3625369,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3625369,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3625369,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Simple &amp; Intuitive \u2014 create field groups and edit values in a clean admin UI.","2":"Made For Developers \u2014 template helpers and copy-ready snippets from the developer panel.","3":"All About Fields \u2014 30+ field types including media, relations, repeaters, and layout fields.","4":"Location Rules \u2014 show field groups by post type, template, taxonomy, role, and more.","5":"Build. Nest. Publish. \u2014 nested builders, conditional logic, and import\/export JSON."}},"plugin_section":[],"plugin_tags":[2010,245286,683,2205,2244],"plugin_category":[],"plugin_contributors":[273558],"plugin_business_model":[],"class_list":["post-343562","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-fields","plugin_tags-field-builder","plugin_tags-meta","plugin_tags-metabox","plugin_tags-repeater","plugin_contributors-sandipbiswas123","plugin_committers-devmanishpathak","plugin_committers-massoft","plugin_committers-masssoftware","plugin_committers-sandipbiswas123"],"banners":{"banner":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/banner-772x250.png?rev=3625359","banner_2x":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/banner-1544x500.png?rev=3625359","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/icon-128x128.png?rev=3625359","icon_2x":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/icon-256x256.png?rev=3625359","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/screenshot-1.png?rev=3625369","caption":"Simple &amp; Intuitive \u2014 create field groups and edit values in a clean admin UI."},{"src":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/screenshot-2.png?rev=3625369","caption":"Made For Developers \u2014 template helpers and copy-ready snippets from the developer panel."},{"src":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/screenshot-3.png?rev=3625369","caption":"All About Fields \u2014 30+ field types including media, relations, repeaters, and layout fields."},{"src":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/screenshot-4.png?rev=3625369","caption":"Location Rules \u2014 show field groups by post type, template, taxonomy, role, and more."},{"src":"https:\/\/ps.w.org\/massoftind-field-builder\/assets\/screenshot-5.png?rev=3625369","caption":"Build. Nest. Publish. \u2014 nested builders, conditional logic, and import\/export JSON."}],"raw_content":"<!--section=description-->\n<p>Massoftind Field Builder is a custom fields \/ field builder plugin for WordPress. Create reusable field groups with nested repeaters, galleries, relationships, location rules, and conditional logic \u2014 then render values in your theme with safe PHP helpers.<\/p>\n\n<h4>Try a live demo<\/h4>\n\n<p>Open WordPress Playground with the plugin preinstalled:<\/p>\n\n<p><a href=\"https:\/\/playground.wordpress.net\/?plugin=massoftind-field-builder&amp;url=\/wp-admin\/admin.php%3Fpage%3Dmassoftind-fb-field-groups&amp;php=8.2\">Try Massoftind Field Builder in WordPress Playground<\/a><\/p>\n\n<p>(Or load <code>blueprint.json<\/code> from the plugin zip in the <a href=\"https:\/\/playground.wordpress.net\/builder\/builder.html\">Playground Builder<\/a>.)<\/p>\n\n<p>Use the visual builder to add fields, set location rules, and configure presentation. Values are stored as post meta and can be rendered in themes with helpers such as <code>massoftind_fb_get()<\/code> and <code>massoftind_fb_have_rows()<\/code>.<\/p>\n\n<h4>Video walkthrough<\/h4>\n\n<p>Watch a short overview of Massoftind Field Builder:<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=6Z7VDzOmx1M<\/p>\n\n<h4>What you can build<\/h4>\n\n<ul>\n<li>Text, number, email, URL, date, date &amp; time, time, color, and range fields<\/li>\n<li>Media: image, gallery, file, YouTube video<\/li>\n<li>Rich content: WYSIWYG, code editor, shortcode, instructional Message<\/li>\n<li>Choices: select, checkbox, radio, toggle, star rating<\/li>\n<li>Relations: post object, relationship, taxonomy, user<\/li>\n<li>Layout: repeater, group, accordion, group tab placement<\/li>\n<\/ul>\n\n<h4>Useful features<\/h4>\n\n<ul>\n<li>Drag-and-drop field builder with search and duplication<\/li>\n<li>Location rules (post type, template, taxonomy, and more)<\/li>\n<li>Conditional logic (show\/hide fields)<\/li>\n<li>Import and export field groups as JSON<\/li>\n<li>Developer panel with copy-ready template examples<\/li>\n<li>Optional authenticated REST API for field groups and values<\/li>\n<li>Built-in documentation in wp-admin<\/li>\n<li>qTranslate-X \/ qTranslate-XT: Language Switching Buttons on text fields; front-end helpers return the active language<\/li>\n<li>WPML + WooCommerce Multilingual (WCML): custom fields registered for translate\/copy; product fields sync with WCML<\/li>\n<li>Integrations: Yoast SEO \/ Premium, Rank Math \/ Pro, WooCommerce, WP All Import Pro, WP All Export Pro<\/li>\n<\/ul>\n\n<h4>Template helpers<\/h4>\n\n<p>Use functions such as <code>massoftind_fb_get()<\/code>, <code>massoftind_fb_update()<\/code>, <code>massoftind_fb_have_rows()<\/code>, <code>massoftind_fb_image()<\/code>, and <code>massoftind_fb_the_gallery()<\/code> in theme templates. See the in-plugin documentation for full examples.<\/p>\n\n<h4>Third-party services<\/h4>\n\n<p>When a YouTube field is used, the admin and front end may load thumbnails or embeds from YouTube (googlevideo.com \/ i.ytimg.com). Those requests go to Google\/YouTube only when such media is configured. Review <a href=\"https:\/\/www.youtube.com\/t\/terms\">YouTube Terms of Service<\/a> if you publish that content.<\/p>\n\n<p>SVG file uploads are disabled by default. Enable them under Settings \u2192 Allow SVG Uploads (administrators only). Developers can also force enable\/disable with the <code>massoftind_fb_allow_svg_uploads<\/code> filter.<\/p>\n\n<h4>Optional integration<\/h4>\n\n<p>Works alongside <strong>Dynamic Content Builder<\/strong> for front-end listings driven by custom fields. Compatible with <strong>qTranslate-X<\/strong> \/ <strong>qTranslate-XT<\/strong>, <strong>WPML<\/strong>, and <strong>WPML Multilingual &amp; Multicurrency for WooCommerce<\/strong>. No other plugins are required.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>massoftind-field-builder<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Massoftind Field Builder<\/strong>.<\/li>\n<li>Open <strong>Field Builders<\/strong> in the admin menu.<\/li>\n<li>Create a field group, add fields, set location rules, and save.<\/li>\n<li>Edit matching content and use template helpers in your theme.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20another%20custom%20fields%20plugin%3F\"><h3>Do I need another custom fields plugin?<\/h3><\/dt>\n<dd><p>No. Massoftind Field Builder is a standalone field builder with its own metabox UI, repeaters, and template helpers.<\/p><\/dd>\n<dt id=\"can%20i%20try%20it%20before%20installing%3F\"><h3>Can I try it before installing?<\/h3><\/dt>\n<dd><p>Yes. Open the <a href=\"https:\/\/playground.wordpress.net\/?plugin=massoftind-field-builder&amp;url=\/wp-admin\/admin.php%3Fpage%3Dmassoftind-fb-field-groups&amp;php=8.2\">WordPress Playground live demo<\/a>.<\/p><\/dd>\n<dt id=\"where%20are%20field%20values%20stored%3F\"><h3>Where are field values stored?<\/h3><\/dt>\n<dd><p>As prefixed post meta on the content object. Field-group definitions are stored as an internal custom post type.<\/p><\/dd>\n<dt id=\"can%20i%20move%20field%20groups%20between%20sites%3F\"><h3>Can I move field groups between sites?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>Tools \u2192 Export<\/strong> and <strong>Import<\/strong> to transfer JSON field-group definitions.<\/p><\/dd>\n<dt id=\"is%20there%20a%20rest%20api%3F\"><h3>Is there a REST API?<\/h3><\/dt>\n<dd><p>Yes, optional. Enable it under <strong>Field Builders \u2192 Settings<\/strong>. Endpoints require authenticated users with appropriate capabilities.<\/p><\/dd>\n<dt id=\"does%20this%20phone%20home%3F\"><h3>Does this phone home?<\/h3><\/dt>\n<dd><p>No. The plugin does not send your site data to Massoftind.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20qtranslate-x%3F\"><h3>Does it work with qTranslate-X?<\/h3><\/dt>\n<dd><p>Yes. With <strong>qTranslate-X<\/strong> or <strong>qTranslate-XT<\/strong> active, text-like fields (text, textarea, WYSIWYG, email, URL, shortcode, code editor, link title) use Language Switching Buttons in the editor. Template helpers such as <code>massoftind_fb_get()<\/code> return the value for the current language on the front end. Values are stored with qTranslate <code>[:lang]<\/code> tags.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%2C%20rank%20math%2C%20wp%20all%20import%20%2F%20export%3F\"><h3>Does it work with Yoast SEO, Rank Math, WP All Import \/ Export?<\/h3><\/dt>\n<dd><p>Yes. When those plugins are active, Field Builder registers SEO variables (<code>%%mfb_field%%<\/code> \/ <code>mfb_field<\/code>), excludes its internal CPT from sitemaps, and exposes fields to WP All Import \/ Export (complex fields as JSON). WooCommerce products can be targeted with location rules.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20wpml%20%2F%20woocommerce%20multilingual%3F\"><h3>Does it work with WPML \/ WooCommerce Multilingual?<\/h3><\/dt>\n<dd><p>Yes. With <strong>WPML<\/strong> active, Field Builder registers its custom fields for translation or copy\/sync, marks Field Builder post types\/taxonomies as translatable, and exposes Site Section option values to String Translation. With <a href=\"https:\/\/wordpress.org\/plugins\/woocommerce-multilingual\/\">WPML Multilingual &amp; Multicurrency for WooCommerce<\/a>, translatable fields appear in the WCML product translation UI and values sync when products are duplicated across languages. Override defaults under WPML \u2192 Settings \u2192 Custom Fields Translation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.9.65<\/h4>\n\n<ul>\n<li>Fix: Plugin Check warning for WPML <code>wpml_object_id<\/code> hook (documented phpcs ignore on call site).<\/li>\n<\/ul>\n\n<h4>1.9.64<\/h4>\n\n<ul>\n<li>Fix: Plugin Check VIP warnings \u2014 filter excluded posts\/terms in PHP instead of <code>post__not_in<\/code> \/ <code>exclude<\/code>.<\/li>\n<\/ul>\n\n<h4>1.9.63<\/h4>\n\n<ul>\n<li>Improved: Link Target UI \u2014 segmented New tab \/ Same window \/ Parent \/ Top control (replaces plain select).<\/li>\n<\/ul>\n\n<h4>1.9.62<\/h4>\n\n<ul>\n<li>Improved: External URL + Link Target are plugin-owned (no child theme require needed for Gallery).<\/li>\n<\/ul>\n\n<h4>1.9.61<\/h4>\n\n<ul>\n<li>Fix: External URL + Link Target now register in Media Attachment Details (plugin + theme require restored).<\/li>\n<\/ul>\n\n<h4>1.9.60<\/h4>\n\n<ul>\n<li>Improved: Gallery\/Image Array includes optional attachment External URL (<code>external_url<\/code>) and Link Target (<code>target<\/code>).<\/li>\n<li>Improved: <code>massoftind_fb_gallery_html()<\/code> links to External URL when set (lightbox unchanged).<\/li>\n<\/ul>\n\n<h4>1.9.59<\/h4>\n\n<ul>\n<li>New: Taxonomy Min\/Max selection limits when Allow Multiple is enabled.<\/li>\n<\/ul>\n\n<h4>1.9.58<\/h4>\n\n<ul>\n<li>Fix: Relationship Selected list shows titles in the current WPML language (matches Available).<\/li>\n<li>New: Relationship Min\/Max selection limits when Allow Multiple is enabled.<\/li>\n<\/ul>\n\n<h4>1.9.57<\/h4>\n\n<ul>\n<li>Improved: Taxonomy <strong>Exclude Terms<\/strong> is now its own toggle; turn it on to reveal the \u201cSearch terms to exclude\u201d picker.<\/li>\n<\/ul>\n\n<h4>1.9.56<\/h4>\n\n<ul>\n<li>Improved: Taxonomy <strong>Exclude Terms<\/strong> only appears when <strong>Allow Multiple<\/strong> is enabled.<\/li>\n<\/ul>\n\n<h4>1.9.55<\/h4>\n\n<ul>\n<li>Improved: Taxonomy <strong>Exclude Terms<\/strong> uses a modern searchable tag picker (same style as field multi-select), not a native multi-select list box.<\/li>\n<\/ul>\n\n<h4>1.9.54<\/h4>\n\n<ul>\n<li>Fix: Taxonomy multi-select keeps selection order (e.g. Advisors then Core Team).<\/li>\n<li>New: Taxonomy Type Settings \u2014 <strong>Exclude Terms<\/strong> multi-select beside Return Format; excluded terms are hidden from the picker and AJAX search.<\/li>\n<\/ul>\n\n<h4>1.9.53<\/h4>\n\n<ul>\n<li>Fix: Settings Preferences \/ Field Usage Guide \/ Filters &amp; Hooks panels now span full content width (were stuck at ~420px).<\/li>\n<\/ul>\n\n<h4>1.9.52<\/h4>\n\n<ul>\n<li>Improved: Settings UI refreshed \u2014 segmented tabs with icons, grouped preference cards, sticky save bar, and clearer Usage \/ Filters guide panels.<\/li>\n<\/ul>\n\n<h4>1.9.51<\/h4>\n\n<ul>\n<li>New: Settings \u2192 <strong>Filters &amp; Hooks<\/strong> tab documents all plugin filters\/actions with copy-paste examples (location rules, values, Site Sections, list views, WPML, and more). Settings now use General \/ Field Usage \/ Filters tabs.<\/li>\n<\/ul>\n\n<h4>1.9.50<\/h4>\n\n<ul>\n<li>Improved: <code>massoftind_fb_location_rule_match<\/code> now runs for every location rule param (taxonomy, post_type, custom, etc.), so themes can override show\/hide from <code>functions.php<\/code>.<\/li>\n<\/ul>\n\n<h4>1.9.49<\/h4>\n\n<ul>\n<li>Fix: Content Order list \u201cOrder\u201d column no longer wraps mid-word; Layout Blocks delete (\u00d7) button alignment; Developer Panel type badges no longer clip; WPML notice dismiss control spacing.<\/li>\n<\/ul>\n\n<h4>1.9.48<\/h4>\n\n<ul>\n<li>Fix: Repeater \/ Layout Blocks <code>get_field()<\/code> now formats nested File, Image, and other sub-fields (so foreach templates get <code>['url']<\/code> arrays instead of raw attachment IDs).<\/li>\n<\/ul>\n\n<h4>1.9.47<\/h4>\n\n<ul>\n<li>Fix: WYSIWYG fields no longer strip <code>&lt;iframe&gt;<\/code> embeds (e.g. Google Maps) on Update \u2014 save uses an allow-list that keeps iframes; TinyMCE keeps them in Visual mode.<\/li>\n<\/ul>\n\n<h4>1.9.46<\/h4>\n\n<ul>\n<li>Fix: Taxonomy multi-select (\u201cSelect Popular Categories\u201d) search dropdown was clipped by repeater\/tabs overflow \u2014 menu now opens above the admin UI with AJAX term search.<\/li>\n<\/ul>\n\n<h4>1.9.45<\/h4>\n\n<ul>\n<li>Fix: Nested repeater \u201cAdd Row\u201d no longer inherits the parent repeater Maximum Rows (Key Points inside Banner Key Points works when sub-repeater has no max).<\/li>\n<\/ul>\n\n<h4>1.9.44<\/h4>\n\n<ul>\n<li>Fix: NO + EN WooCommerce category archives \u2014 Content Order off on front end entirely; auto-repair missing product-category \/ produktkategori rewrite rules. Upload this version (1.9.42 on the server still causes the 404).<\/li>\n<\/ul>\n\n<h4>1.9.43<\/h4>\n\n<ul>\n<li>Fix: Product category archives (NO\/EN) no longer 404 \u2014 Content Order no longer alters front-end\/WPML term lookups; WooCommerce taxonomies excluded from term ordering; WPML settings sync is admin-only.<\/li>\n<\/ul>\n\n<h4>1.9.42<\/h4>\n\n<ul>\n<li>Fix: WooCommerce translated product category URLs (e.g. <code>\/en\/product-category\/greenhouse\/<\/code>) no longer 404 when Field Builder is active \u2014 reserved WC taxonomies\/slugs are never registered; rewrite flush is deferred until after WooCommerce registers rules.<\/li>\n<\/ul>\n\n<h4>1.9.41<\/h4>\n\n<ul>\n<li>Improved: WPML \u2014 making a duplicate independent keeps your existing English ACF\/Field Builder translations (no re-translate). Only the sync link is removed.<\/li>\n<\/ul>\n\n<h4>1.9.40<\/h4>\n\n<ul>\n<li>Fix: WPML \u2014 pages\/posts\/products that are still \u201cCopied From the Original\u201d no longer overwrite the original language when you Update the translation. Field Builder auto-switches to independent translation and restores original Field Builder meta if sync ran mid-save (options already used per-language keys).<\/li>\n<\/ul>\n\n<h4>1.9.39<\/h4>\n\n<ul>\n<li>Fix: WPML \u2014 English Update no longer overwrites Norwegian Field Builder fields (Copy once for all storage fields; block translation\u2192original meta sync; never seed empty values).<\/li>\n<\/ul>\n\n<h4>1.9.38<\/h4>\n\n<ul>\n<li>Fix: WPML \u2014 repeater\/group fields use Copy once (not Copy) so English Sub Heading edits persist after Update; WPML CF prefs are never downgraded to Copy; admin edit screen shows the translation post\u2019s own values (no original fallback).<\/li>\n<li>Improved: Plugin Check ignores for required WPML API filters <code>wpml_current_language<\/code> \/ <code>wpml_default_language<\/code>.<\/li>\n<\/ul>\n\n<h4>1.9.37<\/h4>\n\n<ul>\n<li>Fix: Site Section \/ Footer options are stored per WPML language so saving Norwegian no longer overwrites English (and vice versa). Do not re-run Content Sync to fix this \u2014 edit each language and Save. Options migrate skips non-empty language values unless Force is used.<\/li>\n<\/ul>\n\n<h4>1.9.36<\/h4>\n\n<ul>\n<li>Fix: Native \u201cCustom Fields\u201d Screen Options box stays unchecked\/hidden on post edit screens (including CPTs like FAQ), even when Screen Options prefs were already saved.<\/li>\n<\/ul>\n\n<h4>1.9.35<\/h4>\n\n<ul>\n<li>New: Settings \u2192 Allow SVG Uploads toggle (off by default). Turns on admin SVG\/SVGZ uploads via existing SvgSupport; filter <code>massoftind_fb_allow_svg_uploads<\/code> still overrides.<\/li>\n<\/ul>\n\n<h4>1.9.34<\/h4>\n\n<ul>\n<li>Fix: Field group JSON meta is wp_slash()'d before update_post_meta so instructions\/placeholders containing quotes no longer corrupt stored JSON and wipe the field list after save\/import.<\/li>\n<\/ul>\n\n<h4>1.9.33<\/h4>\n\n<ul>\n<li>New: Field Type dropdown + Browse Fields in General (change Text to Image without deleting), matching ACF-style editing.<\/li>\n<li>Fix: Stop rewriting page_template <code>tamplate-<\/code> \u2192 <code>template-<\/code> so location rules match real theme filenames.<\/li>\n<li>Fix: Import empty location defaults to Post Type = Post; duplicate field keys\/names in JSON get unique keys on import.<\/li>\n<\/ul>\n\n<h4>1.9.32<\/h4>\n\n<ul>\n<li>Improved: Repeater \u201cAdd Row\u201d moved to a modern full-width footer (always visible after scrolling rows); Tools migrate progress\/form use max-width 100%.<\/li>\n<\/ul>\n\n<h4>1.9.31<\/h4>\n\n<ul>\n<li>Fix: Content Sync runs in small AJAX batches (progress bar) to avoid Cloudflare\/WP Engine 502 Bad Gateway timeouts; WPML meta repair is also chunked.<\/li>\n<\/ul>\n\n<h4>1.9.30<\/h4>\n\n<ul>\n<li>Fix: WPML secondary language empty after ACF\u2192Field Builder migrate \u2014 read fallback to original post; migrate all WPML siblings; re-seed translation meta; register bare field names in Custom Fields Translation.<\/li>\n<\/ul>\n\n<h4>1.9.29<\/h4>\n\n<ul>\n<li>Fix: WPML Custom Fields Translation \u2014 sync <code>_massoftind_fb_*<\/code> keys to Copy \/ Copy once in saved WPML settings.<\/li>\n<\/ul>\n\n<h4>1.9.28<\/h4>\n\n<ul>\n<li>Fix: Collapsing a Repeater\/Group header now hides all rows and subfields (display:flex was ignoring [hidden]).<\/li>\n<\/ul>\n\n<h4>1.9.27<\/h4>\n\n<ul>\n<li>New: Repeater sections always show a collapse toggle before Add Row (same as Group), with row count badge.<\/li>\n<\/ul>\n\n<h4>1.9.26<\/h4>\n\n<ul>\n<li>Improved: Modern repeater row UI \u2014 header bar with chevron, index badge, summary, and compact action toolbar.<\/li>\n<\/ul>\n\n<h4>1.9.25<\/h4>\n\n<ul>\n<li>New: Repeater rows include a collapse\/expand toggle (with row summary); Group fields always show a header toggle.<\/li>\n<\/ul>\n\n<h4>1.9.24<\/h4>\n\n<ul>\n<li>Fix: WPML \u2014 text fields use copy-once; Field Builder meta is seeded onto translations (English no longer empty); one-time repair for existing translations.<\/li>\n<\/ul>\n\n<h4>1.9.23<\/h4>\n\n<ul>\n<li>Fix: Tab View Left\/Top shows each top-level field as a tab (and preserves placement on JSON import).<\/li>\n<li>New: Optional collapsible accordion headers for Repeater and Group fields (including nested).<\/li>\n<\/ul>\n\n<h4>1.9.22<\/h4>\n\n<ul>\n<li>New: Edit Fields link on field-group metaboxes (post edit) opens the Field Group builder for admins.<\/li>\n<\/ul>\n\n<h4>1.9.21<\/h4>\n\n<ul>\n<li>New: Integrations for Yoast SEO \/ Premium, Rank Math \/ Pro, WooCommerce, WP All Import Pro, and WP All Export Pro (auto-detected).<\/li>\n<\/ul>\n\n<h4>1.9.20<\/h4>\n\n<ul>\n<li>Fix: Template compatibility loads even if only some helpers exist; have_rows() aborts instead of hanging when the_row() is omitted.<\/li>\n<li>Fix: Single FAQ theme pattern (if\/while have_rows + the_row) stays safe under template compatibility.<\/li>\n<\/ul>\n\n<h4>1.9.19<\/h4>\n\n<ul>\n<li>Improved: Removed third-party product branding from public docs\/changelogs and renamed internal import helpers to portable\/legacy wording (import + meta compatibility unchanged).<\/li>\n<\/ul>\n\n<h4>1.9.17<\/h4>\n\n<ul>\n<li>New: Content Order \u2014 drag-reorder posts\/CPTs and taxonomy terms from Field Builders \u2192 Content Order (menu_order \/ term meta; no separate ordering plugin).<\/li>\n<\/ul>\n\n<h4>1.9.16<\/h4>\n\n<ul>\n<li>New: Settings \u2192 General \u2192 Classic Editor toggle \u2014 use TinyMCE instead of the block editor without a separate Classic Editor plugin.<\/li>\n<\/ul>\n\n<h4>1.9.15<\/h4>\n\n<ul>\n<li>Fix: List View column drag-and-drop (Title \/ Author \/ Date \/ Featured Image reorder) \u2014 handle was a button blocked by jQuery UI Sortable.<\/li>\n<li>Fix: Status filter on non-order post types (e.g. Home Banner) no longer lists WooCommerce \/ unrelated plugin statuses.<\/li>\n<\/ul>\n\n<h4>1.9.14<\/h4>\n\n<ul>\n<li>Fix: Force Featured Image metabox for Field Builder CPTs (Home Banner) when theme\/plugins prevent core from adding it \u2014 appears in Screen Options again.<\/li>\n<\/ul>\n\n<h4>1.9.13<\/h4>\n\n<ul>\n<li>Fix: Featured Image metabox for imported CPTs (e.g. Home Banner) when the theme limits <code>post-thumbnails<\/code>.<\/li>\n<li>Fix: WPML empty CPT lists (e.g. FAQ \u201cNo faq found\u201d while All count is &gt; 0) by syncing CPT translation settings and assigning default language to orphan posts.<\/li>\n<li>Fix: Native \u201cCustom Fields\u201d metabox is hidden by default in Screen Options.<\/li>\n<li>Improved: WooCommerce core post types are reserved; WPML + WooCommerce Multilingual field sync kept.<\/li>\n<\/ul>\n\n<h4>1.9.12<\/h4>\n\n<ul>\n<li>Fix: WYSIWYG Content fields now run shortcodes (e.g. <code>[product_categories \u2026]<\/code>) like WordPress post content.<\/li>\n<\/ul>\n\n<h4>1.9.11<\/h4>\n\n<ul>\n<li>Fix: Nested repeater \/ group <code>have_rows()<\/code> now works with nested <code>if ( have_rows() ) { while ( have_rows() ) }<\/code> loops under a repeater.<\/li>\n<li>Fix: Taxonomy fields with portable <code>field_type=multi_select<\/code> return term ID arrays correctly when <code>multiple<\/code> is 0.<\/li>\n<li>Fix: <code>get_field( '\u2026', 'product_cat_123' )<\/code> \/ term selectors read term meta (legacy + Massoftind keys).<\/li>\n<li>Fix: Relationship <code>return_format<\/code> (object vs id) honored for template compatibility.<\/li>\n<\/ul>\n\n<h4>1.9.10<\/h4>\n\n<ul>\n<li>Fix: Saving Post Types \/ Taxonomies \/ List Views \/ Site Sections no longer triggers \u201cheaders already sent\u201d.<\/li>\n<li>Fix: Empty portable <code>menu_position<\/code> imports as default 25 (exports often use <code>\"\"<\/code> when unset).<\/li>\n<\/ul>\n\n<h4>1.9.9<\/h4>\n\n<ul>\n<li>Fix: Portable JSON import now creates Post Types, Taxonomies, and Site Sections (options pages) from mixed exports \u2014 not only field groups.<\/li>\n<\/ul>\n\n<h4>1.9.8<\/h4>\n\n<ul>\n<li>Improved: Field Groups bulk actions dropdown, Apply button, and row checkboxes match the dashboard UI.<\/li>\n<\/ul>\n\n<h4>1.9.7<\/h4>\n\n<ul>\n<li>Fix: Layout Blocks \u201cAdd Section\u201d button was clipped by icon-button width (34px); labeled button now uses auto width.<\/li>\n<\/ul>\n\n<h4>1.9.6<\/h4>\n\n<ul>\n<li>Fix: Layout Blocks \u201cAdd Section\u201d no longer shows a duplicate dark tooltip over the blue button.<\/li>\n<\/ul>\n\n<h4>1.9.5<\/h4>\n\n<ul>\n<li>Compatibility: Gallery return format defaults to Image Array (<code>ID<\/code>, <code>url<\/code>, \u2026) for existing theme loops.<\/li>\n<li>Fix: Align readme Stable tag with plugin header version.<\/li>\n<li>Docs: Add video walkthrough link.<\/li>\n<\/ul>\n\n<h4>1.9.4<\/h4>\n\n<ul>\n<li>Fix: Content Sync overwrites outdated\/dead gallery IDs and other stale Massoftind meta.<\/li>\n<li>Improved: Tools page simplified \u2014 one-click \u201cSync everything now\u201d plus advanced options.<\/li>\n<\/ul>\n\n<h4>1.9.3<\/h4>\n\n<ul>\n<li>Fix: Layout Blocks rebuild from portable flexible meta that stores an ordered list of layout slugs.<\/li>\n<li>Fix: Gallery falls through to unprefixed meta when stored attachment IDs are missing.<\/li>\n<\/ul>\n\n<h4>1.9.2<\/h4>\n\n<ul>\n<li>Fix: Gallery and Layout Blocks fall through to legacy\/unprefixed meta when Massoftind storage holds a non-usable value (e.g. flexible row count instead of rows).<\/li>\n<li>Fix: Legacy row rebuild keeps leaf meta keys with underscores (section_heading, layout row keys).<\/li>\n<li>New: Field Groups list \u2014 select all \/ bulk delete.<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li>Fix: Remap imported conditional logic from field keys to field names so dependent fields show correctly.<\/li>\n<li>Fix: After-title field groups (Banner Video \/ Banner Text) render on the edit screen.<\/li>\n<li>Fix: Stop empty one-tab-per-field UI when tab markers were skipped on import; Gallery and Layout Blocks show again.<\/li>\n<li>Fix: Gallery attachment ID parsing for portable array-shaped values.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>New: Message field (instructional text in the editor; no stored value).<\/li>\n<li>New: Date &amp; Time field (<code>datetime<\/code>) with import mapping from portable JSON.<\/li>\n<li>New: Programmatic write helpers \u2014 <code>massoftind_fb_update()<\/code>, <code>massoftind_fb_add_row()<\/code>, <code>massoftind_fb_delete_row()<\/code> (optional template-compat aliases when enabled).<\/li>\n<li>Improved: Location rules \u2014 post status, post format, post taxonomy, attachment, user form, comment.<\/li>\n<li>Improved: JSON import fidelity for clone, password, message, and date-time types; editor-only tab markers are skipped (group tab placement still detected).<\/li>\n<li>Compatibility: WPML translate list includes message fields; branding\/docs avoid third-party trademarks.<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>New: WPML compatibility \u2014 register Field Builder meta for translate\/copy, CPT\/taxonomy translate flags, Site Section admin texts.<\/li>\n<li>New: WooCommerce Multilingual (WCML) support \u2014 product translation fields + meta sync on duplicate.<\/li>\n<li>New: List Views (admin list-table columns) and related admin polish.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>New: Layout Blocks field \u2014 add ordered content sections, each using a named layout with its own sub-fields.<\/li>\n<li>Import: portable flexible_content JSON \u2192 Layout Blocks (layouts preserved).<\/li>\n<li>Theme helpers: massoftind_fb_get_layout() and get_row_layout() (when template compatibility is enabled).<\/li>\n<li>Legacy meta: read flexible-style layout row keys into Layout Blocks values.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Migration helpers: Settings toggles for template compatibility and legacy meta read fallback.<\/li>\n<li>Legacy meta: read unprefixed field names and repeater row keys when Massoftind meta is empty; Tools page can copy values into Massoftind storage.<\/li>\n<li>Site Sections: read\/migrate <code>options_*<\/code> (and custom roots); helpers with 'option' supported.<\/li>\n<li>Import: location rule normalization (template path typos, options_page), more type mappings, relationship post_types.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Optional theme helper aliases when not already defined (get_field, have_rows, get_sub_field, the_row, \u2026).<\/li>\n<li>Nested repeater loops (have_rows inside have_rows) for common theme templates.<\/li>\n<li>Image return format \"array\" returns keys (ID, url, alt) with back-compat numeric indexes.<\/li>\n<\/ul>\n\n<h4>1.3.61<\/h4>\n\n<ul>\n<li>Fix: Text \/ Textarea always keep safe HTML tags (span, strong, em, i, b, u, br, a) on Update \u2014 no toggle required.<\/li>\n<\/ul>\n\n<h4>1.3.60<\/h4>\n\n<ul>\n<li>Text \/ Textarea: Allow basic HTML setting + massoftind_fb_kses_basic_html() helper.<\/li>\n<\/ul>\n\n<h4>1.3.59<\/h4>\n\n<ul>\n<li>Promo: WordPress Playground blueprint for one-click live demo.<\/li>\n<li>Admin: dashboard onboarding checklist (first field group in minutes).<\/li>\n<li>Admin: optional dismissible review nudge after a field group exists.<\/li>\n<\/ul>\n\n<h4>1.3.58<\/h4>\n\n<ul>\n<li>Fix: qTranslate-X compatibility \u2014 read raw Field Builder meta then translate strings so repeater have_rows()\/sub_field() work on the front end.<\/li>\n<\/ul>\n\n<h4>1.3.57<\/h4>\n\n<ul>\n<li>Fix: lock main page ID before get_header so repeater helpers read the correct post meta.<\/li>\n<li>Fix: empty key-based meta arrays no longer block fallback to name-based stored values.<\/li>\n<\/ul>\n\n<h4>1.3.56<\/h4>\n\n<ul>\n<li>Fix: template helpers prefer the queried page ID on singular views so values still load after get_header() \/ secondary loops.<\/li>\n<\/ul>\n\n<h4>1.3.55<\/h4>\n\n<ul>\n<li>Fix: have_rows() on Group fields no longer drops text sub-fields (badge\/heading empty while loop still ran).<\/li>\n<\/ul>\n\n<h4>1.3.54<\/h4>\n\n<ul>\n<li>Fix: nested Sub Fields drag-and-drop blocked by sortable cancel matching parent inline config panels.<\/li>\n<\/ul>\n\n<h4>1.3.53<\/h4>\n\n<ul>\n<li>UI: remove help \u201ci\u201d icons next to Label \/ Name and other setting labels.<\/li>\n<\/ul>\n\n<h4>1.3.52<\/h4>\n\n<ul>\n<li>Fix: builder tooltips clipped by overflow \u2014 Delete\/Drag tips now show.<\/li>\n<li>Fix: drag-reorder for deeply nested Sub Fields (Repeater \u2192 Group \u2192 Repeater \u2192 fields).<\/li>\n<\/ul>\n\n<h4>1.3.51<\/h4>\n\n<ul>\n<li>Fix: text domain aligned to plugin slug massoftind-field-builder.<\/li>\n<li>Security: sanitize posted field trees and AJAX JSON payloads before use.<\/li>\n<li>Fix: remove standalone wp_enqueue_script(wplink); load via script dependencies (core handle).<\/li>\n<\/ul>\n\n<h4>1.3.50<\/h4>\n\n<ul>\n<li>Fix: SVG image\/gallery admin preview blank after save (inlined SVG was stripped by wp_kses_post; use img preview instead).<\/li>\n<\/ul>\n\n<h4>1.3.49<\/h4>\n\n<ul>\n<li>Fix: harden sanitize for checkbox, image, file, gallery, relationship, range, video, and YouTube against array POST \/ \"Array\" corruption.<\/li>\n<li>Fix: re-sync qTranslate hooks after AJAX-added repeater, accordion, and tabs rows.<\/li>\n<\/ul>\n\n<h4>1.3.48<\/h4>\n\n<ul>\n<li>Fix: repeater delete + qTranslate \u2014 rebind hidden language field names after reindex so removed rows stay removed.<\/li>\n<li>Fix: scalar fields no longer save PHP \"(string) array\" as the literal text \"Array\".<\/li>\n<li>Fix: drop empty\/corrupt repeater rows (junk nested rows created by stale multilingual POST data).<\/li>\n<\/ul>\n\n<h4>1.3.47<\/h4>\n\n<ul>\n<li>Plugin Check: echo SVG\/video HTML via wp_kses() directly (custom kses wrappers are not recognized by PHPCS).<\/li>\n<\/ul>\n\n<h4>1.3.46<\/h4>\n\n<ul>\n<li>Security: tighten REST permission callbacks (manage_options for field groups; edit_post for per-post field values).<\/li>\n<li>I18n: text domain aligned to WordPress.org slug <code>massoftind-field-builder<\/code>.<\/li>\n<li>Security: late-escape admin\/field output (attributes, SVG, shortcodes, media previews) via esc_attr \/ wp_kses \/ wp_kses_post.<\/li>\n<li>Prefixing: remove generic DFB_* global constants; keep massoftind_fb \/ MASSOFTIND_FB prefixes.<\/li>\n<\/ul>\n\n<h4>1.3.45<\/h4>\n\n<ul>\n<li>Fix: when two field groups use the same field name, helpers pick the field that has stored values (not the empty duplicate).<\/li>\n<\/ul>\n\n<h4>1.3.44<\/h4>\n\n<ul>\n<li>Native qTranslate-X \/ qTranslate-XT support: admin Language Switching Buttons and front-end language decode for template helpers.<\/li>\n<\/ul>\n\n<h4>1.3.43<\/h4>\n\n<ul>\n<li>Rebranded to Massoftind Field Builder (slug, text domain, namespace, prefixes).<\/li>\n<li>Removed non-GPL Fancybox; gallery lightbox is plugin GPL JS. Masonry uses WordPress core only.<\/li>\n<li>Assets load via wp_enqueue_* \/ wp_add_inline_*; no inline style\/script tags in templates.<\/li>\n<li>WordPress.org submission polish: remove trademark tag; defer plugin details to the official directory API.<\/li>\n<\/ul>\n\n<h4>1.3.42<\/h4>\n\n<ul>\n<li>Plugin Check: replace var_export in developer code generator; document intentional meta_key ordering query.<\/li>\n<\/ul>\n\n<h4>1.3.41<\/h4>\n\n<ul>\n<li>Plugin Check fixes: translators comments, local asset loading (no CDN), wp_enqueue_style for details modal.<\/li>\n<\/ul>\n\n<h4>1.3.40<\/h4>\n\n<ul>\n<li>WordPress.org packaging: readme.txt, license.txt, Plugin Check cleanup, author\/branding alignment.<\/li>\n<\/ul>\n\n<h4>1.3.39<\/h4>\n\n<ul>\n<li>Developer Panel: Full Template Example for Repeaters\/Groups includes Conditional Logic as PHP <code>if<\/code> checks.<\/li>\n<\/ul>\n\n<h4>1.3.38<\/h4>\n\n<ul>\n<li>Fixed Conditional Logic dropdown changes triggering a full panel rebuild on autosave.<\/li>\n<\/ul>\n\n<h4>1.3.37<\/h4>\n\n<ul>\n<li>Date field: Display Format and Return Format settings; <code>massoftind_fb_date()<\/code> \/ <code>massoftind_fb_the_date()<\/code> helpers.<\/li>\n<\/ul>","raw_excerpt":"Build nested custom fields for WordPress \u2014 field builder, repeater fields, metaboxes, location rules, and theme helpers.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/343562","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=343562"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/masssoftware"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=343562"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=343562"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=343562"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=343562"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=343562"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=343562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}