{"id":361926,"date":"2026-09-08T22:38:49","date_gmt":"2026-09-08T22:38:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ultimate-toolkit\/"},"modified":"2026-09-09T23:15:15","modified_gmt":"2026-09-09T23:15:15","slug":"ultivo","status":"publish","type":"plugin","link":"https:\/\/ibo.wordpress.org\/plugins\/ultivo\/","author":23540937,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.0","requires_php":"8.2","requires_plugins":null,"header_name":"Ultivo Toolkit \u2013 Custom Fields, Forms, SEO & Enhancements","header_author":"wpultimate.org","header_description":"The WordPress developer toolkit: custom fields, forms, SEO and site utilities in one plugin, without external dependencies.","assets_banners_color":"1f1c4f","last_updated":"2026-09-09 23:15:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpultimate.org","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":63,"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":"royaar","date":"2026-09-09 23:15:15","revision":3689099}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3687357,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3687357,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3687364,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3687364,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3687357,"resolution":"1","location":"assets","locale":"","width":2560,"height":1279},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3687357,"resolution":"2","location":"assets","locale":"","width":2560,"height":1279},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3687357,"resolution":"3","location":"assets","locale":"","width":2560,"height":1279},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3687357,"resolution":"4","location":"assets","locale":"","width":2560,"height":1279},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3687357,"resolution":"5","location":"assets","locale":"","width":2560,"height":1279},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3687357,"resolution":"6","location":"assets","locale":"","width":2560,"height":1279}},"screenshots":{"1":"The field group builder. Every field carries its name and type, and each one opens into settings for validation, presentation and conditional logic.","2":"What your editors get: your fields on the post or page they belong to, grouped into tabs, in the order and layout you defined.","3":"The form builder. Drag a field from the palette onto the canvas, and the preview is the same renderer that draws the form on your site.","4":"The dashboard: recent submissions, what you edited last, and anything that still needs attention.","5":"Site enhancements. Seventeen small modules you would otherwise install separate plugins for, each one off until you switch it on.","6":"SEO on every post and page: title and description with a live Google and social preview, a canonical URL, and a switch to keep the page out of search results."}},"plugin_section":[],"plugin_tags":[2010,1487,17953,39123,2244],"plugin_category":[42,55],"plugin_contributors":[279787],"plugin_business_model":[],"class_list":["post-361926","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-fields","plugin_tags-custom-post-types","plugin_tags-enhancements","plugin_tags-optimizations","plugin_tags-repeater","plugin_category-contact-forms","plugin_category-seo-and-marketing","plugin_contributors-royaar","plugin_committers-royaar"],"banners":{"banner":"https:\/\/ps.w.org\/ultivo\/assets\/banner-772x250.png?rev=3687364","banner_2x":"https:\/\/ps.w.org\/ultivo\/assets\/banner-1544x500.png?rev=3687364","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ultivo\/assets\/icon-128x128.gif?rev=3687357","icon_2x":"https:\/\/ps.w.org\/ultivo\/assets\/icon-256x256.gif?rev=3687357","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-1.png?rev=3687357","caption":"The field group builder. Every field carries its name and type, and each one opens into settings for validation, presentation and conditional logic."},{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-2.png?rev=3687357","caption":"What your editors get: your fields on the post or page they belong to, grouped into tabs, in the order and layout you defined."},{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-3.png?rev=3687357","caption":"The form builder. Drag a field from the palette onto the canvas, and the preview is the same renderer that draws the form on your site."},{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-4.png?rev=3687357","caption":"The dashboard: recent submissions, what you edited last, and anything that still needs attention."},{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-5.png?rev=3687357","caption":"Site enhancements. Seventeen small modules you would otherwise install separate plugins for, each one off until you switch it on."},{"src":"https:\/\/ps.w.org\/ultivo\/assets\/screenshot-6.png?rev=3687357","caption":"SEO on every post and page: title and description with a live Google and social preview, a canonical URL, and a switch to keep the page out of search results."}],"raw_content":"<!--section=description-->\n<p>Every WordPress build starts the same way: a field plugin, a form plugin, an SEO plugin, and a handful of one-trick utilities for the things WordPress does not do. Ultivo Toolkit is those four, in one plugin that shares one interface, one set of conventions and one place to switch things on and off.<\/p>\n\n<p>Every part is optional. Turn off what you do not need under Ultivo Toolkit \u2192 Settings and it registers nothing at all: no menus, no screens, no hooks, no queries. A plugin that does four things is only heavy if all four are running. Nothing you built disappears when you switch one off: the data stays put and comes back the moment you switch the feature on again.<\/p>\n\n<p>Pro adds Blueprints, Flexible Content and the Clone field, and is available at <a href=\"https:\/\/wpultimate.org\">wpultimate.org<\/a>. Launch offer: 10% off your first year with code <code>LAUNCH10<\/code>, until 30 September 2026.<\/p>\n\n<p>Nothing is sent to us, ever. Two features do reach an outside service: spam protection, if you turn it on, and the map preview in the admin. Both are described under External services below.<\/p>\n\n<p><strong>Custom fields<\/strong><\/p>\n\n<p>Build field groups in a visual builder and attach them to anything with location rules.<\/p>\n\n<ul>\n<li>33 field types: text, textarea, number, range, email, URL, password, phone, WYSIWYG, image, file, gallery, select, checkbox, radio, button group, true\/false, link, post object, page link, relationship, taxonomy, user, map, date picker, date &amp; time picker, time picker, color picker, message, tab, accordion, group and repeater<\/li>\n<li>Location rules with AND\/OR groups: post type, page template, individual page, taxonomy, user role, options page or block<\/li>\n<li>Conditional logic per field, so a field only appears when another has the right value<\/li>\n<li>Validation rules (minimum and maximum length, or a regex pattern with your own message), enforced both in the browser and on the server<\/li>\n<li>Register post types, taxonomies and options pages from the admin, with a visual icon picker<\/li>\n<li>Local JSON: field groups are written to <code>uploads\/ultivo-json\/<\/code> and also read from <code>{theme}\/ultivo-json\/<\/code>, so they can travel through version control, with a Sync button when a file is newer than the database<\/li>\n<\/ul>\n\n<p><strong>Forms<\/strong><\/p>\n\n<ul>\n<li>Drag-and-drop builder with a live canvas: drop a field, see what the visitor will see<\/li>\n<li>Text, email, phone, number, date, select, checkbox, radio, file upload, hidden fields, repeatable groups and free HTML, in one or more columns<\/li>\n<li>Submissions are stored in WordPress and readable per entry in the admin; notifications go to any address, with a Reply-To that can point at the visitor's own email<\/li>\n<li>Spam protection with Google reCAPTCHA v2, reCAPTCHA v3 or Cloudflare Turnstile. Set the keys once, then decide per form<\/li>\n<li>Optional AJAX submit, so a form in a popup shows its confirmation instead of reloading the page underneath it<\/li>\n<li>Uploads are stored outside the media library and can only be downloaded by someone who may edit the entry<\/li>\n<\/ul>\n\n<p><strong>SEO<\/strong><\/p>\n\n<p>Enough to launch a site with, and nothing more. No traffic lights, no scores.<\/p>\n\n<ul>\n<li>Title and meta description per post, page or archive, with variables such as <code>%title%<\/code> and <code>%sitename%<\/code>, and a live preview of the Google result<\/li>\n<li>Open Graph and Twitter tags, with an image per post falling back to the featured image and then to a site-wide default<\/li>\n<li>Canonical URL, noindex, and an XML sitemap that leaves noindexed content out<\/li>\n<li>Stays out of the way: with Yoast, Rank Math or All in One SEO active, Ultivo Toolkit prints no tags of its own<\/li>\n<\/ul>\n\n<p><strong>Site enhancements<\/strong><\/p>\n\n<p>Seventeen switches for the things you set up on every site: cleanup of the <code>&lt;head&gt;<\/code>, disabling comments, the classic editor, maintenance mode, SVG and AVIF uploads, login branding, duplicating posts, a custom login URL, manual content ordering, disabling components you do not use, limiting login attempts, revisions and Heartbeat, redirects with a 404 log, admin columns, SMTP and a full admin menu organiser. All off by default.<\/p>\n\n<p><strong>For developers<\/strong><\/p>\n\n<ul>\n<li>Template functions: <code>ultivo_field( 'title' )<\/code> for one value (with an optional default), and <code>ultivo_rows( 'blocks' )<\/code> to loop over a repeater or flexible content. A whole flexible field renders in one line: <code>ultivo_rows( 'blocks' )-&gt;render( 'template-parts\/blocks' )<\/code><\/li>\n<li>Coming from ACF, the classic shapes work too: <code>ultivo_get_field()<\/code>, <code>ultivo_the_field()<\/code>, <code>ultivo_have_rows()<\/code>, <code>ultivo_the_row()<\/code>, <code>ultivo_get_sub_field()<\/code>, <code>ultivo_get_row_layout()<\/code>, <code>ultivo_update_field()<\/code>, <code>ultivo_add_row()<\/code>, <code>ultivo_add_options_page()<\/code><\/li>\n<li>Field groups in code with <code>ultivo_add_local_field_group()<\/code>, or exported as PHP from the Tools page<\/li>\n<li>Values are stored in ordinary post meta as <code>field_name<\/code> plus a hidden <code>_field_name<\/code> pointing at the field key; repeater rows as <code>name_0_subname<\/code>. Nothing is serialised into a blob, so <code>WP_Query<\/code>, <code>get_post_meta()<\/code> and SQL all keep working.<\/li>\n<li>REST API support per field group<\/li>\n<li>Blocks can be registered in PHP with <code>ultivo_register_block_type()<\/code> and render through a template or callback. Registering is code-only for now, and the block sidebar handles the simple field types (text, number, select, radio, true\/false and colour), while the rest is best edited in a field group.<\/li>\n<\/ul>\n\n<p><strong>Coming from ACF?<\/strong><\/p>\n\n<p>Ultivo Toolkit stores values in exactly the pattern ACF uses, and Tools \u2192 Migrate from ACF converts your field groups from the database and from the theme's <code>acf-json<\/code> folder. Field keys are preserved, so your existing content keeps working and your templates keep returning the same values. Migration is a feature here, not the point of the plugin. You are not buying a copy of something else.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to two kinds of outside service, and both are listed in full below. Spam protection runs only when you pick a provider and enter its keys; the map preview runs only in the admin, on posts where you use a Map field. Nothing else leaves your site, and nothing is sent to us.<\/p>\n\n<p><strong>Google reCAPTCHA (v2 and v3)<\/strong>\nUsed to tell human visitors from bots when you enable it for your forms. On any page that shows a form with reCAPTCHA enabled, the reCAPTCHA script is loaded from Google. When a visitor submits that form, their reCAPTCHA token and IP address are sent to Google for verification.\nTerms: https:\/\/policies.google.com\/terms\nPrivacy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p><strong>Cloudflare Turnstile<\/strong>\nAn alternative to reCAPTCHA with the same purpose. On any page that shows a form with Turnstile enabled, the Turnstile script is loaded from Cloudflare. When a visitor submits that form, their Turnstile token and IP address are sent to Cloudflare for verification.\nTerms: https:\/\/www.cloudflare.com\/website-terms\/\nPrivacy: https:\/\/www.cloudflare.com\/privacypolicy\/<\/p>\n\n<p><strong>OpenStreetMap<\/strong>\nUsed only by the Map field, and only in the WordPress admin. When you edit a post\nthat has a Map field, the plugin embeds a map preview from openstreetmap.org in an\niframe, with the coordinates you entered in its URL. Nothing is sent for visitors:\nthe Map field is not available in forms, so this never runs on your public pages.\nTerms: https:\/\/osmfoundation.org\/wiki\/Terms_of_Use\nPrivacy: https:\/\/osmfoundation.org\/wiki\/Privacy_Policy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ultivo<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin through Plugins \u2192 Add New.<\/li>\n<li>Activate it through the Plugins menu.<\/li>\n<li>A short setup wizard opens once, where you pick the features and enhancements you want. You can change every choice later under Ultivo Toolkit \u2192 Settings.<\/li>\n<\/ol>\n\n<p>Ultivo Toolkit needs WordPress 6.0 or newer and PHP 8.2 or newer.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20one%20plugin%20instead%20of%20four%3F\"><h3>Why one plugin instead of four?<\/h3><\/dt>\n<dd><p>Because four plugins mean four interfaces, four update cycles and four places where something can break when WordPress changes. Ultivo Toolkit shares one set of conventions across fields, forms, SEO and the site utilities, and every part can be switched off if you would rather keep what you already have.<\/p><\/dd>\n<dt id=\"will%20four%20plugins%20in%20one%20slow%20my%20site%20down%3F\"><h3>Will four plugins in one slow my site down?<\/h3><\/dt>\n<dd><p>Only the parts you switch on do anything. A disabled feature or module is not \"loaded but idle\": its code is never included, so it registers no hooks, adds no admin screens, enqueues no CSS or JavaScript and runs no queries. A site that only uses custom fields carries the custom fields code and nothing else.<\/p>\n\n<p>On the front end, the parts that are on stay out of the way too. Field values are ordinary post meta, so reading them is a normal <code>get_post_meta()<\/code> call. The SEO part prints a handful of tags in <code>&lt;head&gt;<\/code>. A form loads its assets while it renders, and only the ones it needs: no form on the page means no CSS and no JavaScript, and a form without a date field does not load the date picker.<\/p><\/dd>\n<dt id=\"can%20i%20run%20it%20alongside%20my%20current%20plugins%3F\"><h3>Can I run it alongside my current plugins?<\/h3><\/dt>\n<dd><p>Yes. Ultivo Toolkit never switches another plugin off. Its SEO part deliberately prints nothing while Yoast, Rank Math or All in One SEO is active, and where a feature overlaps with something you already have, the dashboard says so and lets you decide.<\/p><\/dd>\n<dt id=\"where%20are%20values%20stored%3F\"><h3>Where are values stored?<\/h3><\/dt>\n<dd><p>In ordinary post meta, as <code>field_name<\/code>, with a hidden <code>_field_name<\/code> recording which field wrote it. Which meta table depends on where the field group appears: post meta, user meta, term meta or options. Repeater rows become separate keys like <code>name_0_subname<\/code>. That means your data stays readable and queryable with plain WordPress functions.<\/p><\/dd>\n<dt id=\"can%20i%20register%20field%20groups%20in%20code%3F\"><h3>Can I register field groups in code?<\/h3><\/dt>\n<dd><p>Yes, with <code>ultivo_add_local_field_group()<\/code> on the <code>ultivo\/init<\/code> action. The Tools page exports any existing group as ready-to-paste PHP. Local JSON does the same thing automatically for every group.<\/p><\/dd>\n<dt id=\"can%20i%20migrate%20from%20acf%3F\"><h3>Can I migrate from ACF?<\/h3><\/dt>\n<dd><p>Yes. Tools \u2192 Migrate from ACF converts field groups from the database and from the theme's <code>acf-json<\/code> folder. Field keys are preserved, so no content has to be migrated with them.<\/p><\/dd>\n<dt id=\"who%20can%20see%20the%20ultivo%20toolkit%20screens%3F\"><h3>Who can see the Ultivo Toolkit screens?<\/h3><\/dt>\n<dd><p>Administrators. Every screen requires the <code>manage_options<\/code> capability, and so does the content behind it: field groups, forms and entries. All of them can change how the site behaves.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20or%20delete%20the%20plugin%3F\"><h3>What happens when I deactivate or delete the plugin?<\/h3><\/dt>\n<dd><p>Deactivating stops everything immediately. No menus, no hooks, and a custom login URL goes back to <code>wp-login.php<\/code>, while your data stays untouched. Deleting the plugin also leaves your data in the database on purpose, so that reinstalling picks up exactly where you left off. If you want it gone for good, remove it yourself before deleting.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Note: the Ultivo Toolkit screens and everything behind them (field groups, forms and entries) require the <code>manage_options<\/code> capability. Editors and authors have no access, because all of these can change how the site behaves.<\/li>\n<\/ul>","raw_excerpt":"The WordPress developer toolkit: custom fields, forms, SEO and site utilities in one plugin, without external dependencies.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361926"}],"author":[{"embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/royaar"}],"wp:attachment":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361926"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361926"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361926"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361926"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361926"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}