I recently released Ultimate Fields 3.0, as well as the first ever online versions of Ultimate Fields Pro and the website of the plugin. As with the relase of 1.0, I see that every second person asks questions like:
Why did you choose to make a custom fields plugin? ACF and Carbon Fields are pretty well established and its really hard to break into this space.
or
More and more CF options are available so why should i choose yours over others or free Versions?
I do not think it would be professional at all to compare my product with others on my products’ website. However, since I know that those questions will be asked over and over again, I decided to write this article and to do it here, on my blog.
Inspirations
I am not trying to fool anyone, Ultimate Fields borrows a lot of ideas from other plugins for custom fields in WordPress. To be honest, because I have been working on the project since 2012 I have pretty much lost track of the sources for a lot of those ideas.
Anyway, a lot of things have changes since then and if I have to pick the two most ideologically similar plugins, those would be:
- Advanced Custom Fields: The main idea I’d say I borrowed from ACF is the interface for managing fields in the dashboard. However, since its pretty much the benchmark for Custom Fields, I tried to include many features like in-theme JSON files and what-not in order to be competitive.
- Carbon Fields: The biggest upside of Carbon Fields, at least to me, is that it allows you to manage your fields with OOP code and this is a concept that has been in Ultimate Fields since the “beginning of time”.
It is their features that I will have to beat. Let’s take a look how things are looking.
Current state (3.0)
To begin with, I wanted version 3.0 to at least cover all of the features of ACF and CF combined, in order to be competitive. And this is pretty much what I did. I will split those features into categories and look into them, but overall, with a couple of exceptions, all of the competitors features are in Ultimate Fields.
PHP API and User Interface
The PHP API looks relatively similar to the one, offered by Carbon Fields and I’m quite happy with it. A lot of effort was put into the separation of the User Interface (used to create fields) and the actual core of Ultimate Fields in order to provide the lightest possible experience when the editing UI is not in use.
The UI on the other hand, offers an excellent level of intuitivity while fields are being crated, by displaying their previews in a WYSIWYG interface.
Locations
Ultimate Fields and Ultimate Fields Pro, together support the following locations:
- Post Type
- Options Page (also available for multisite networks)
- Taxonomy
- Comment
- User
- Widget
- Shortcode: Unique to Ultimate Fields, will be extended for Gutenberg once Gutenberg is live.
- Menu Item
- Attachment
- Customizer: Not only is UF one of the first plugins to support the customizer, but it also works with post types, taxonomies and users, instead of just options!
This list pretty much covers everything the competition offers with the singular exception being the “Menu” location from ACF, which I would gladly implement as soon as a single person requests it.
Fields
Of course, a plugin for fields would be nothing without a rich collection of field types. Through one field type or another, Ultimate Fields covers the functionality of its rivals with only the following exceptions:
- The “Header Scripts” and “Footer Scripts” fields of Carbon Fields. I just didn’t find them very useful.
- The “Button Group” and “Accordion” fields of ACF.
Of course, instead of them I have some additions:
- The Video field lets users select multiple sources for a video, as well as a poster for it.
- The Font field connects to the Google Fonts API in order to let users visually select a custom font.
- The Icon field allows for the visual selection of a font icon.
- The Sidebar field allows the creation of custom sidebars through a field, in order to let users customize widgets and display them in various places.
- The Layout field takes repeaters to the next level by adding columns to the concept.
Generic features
Tabs, Conditional Logic, Tabs, Sections, Import and Export (JSON and PHP), unlimited field nesting and etc. are also available in Ultimate Fields.
Additionally, as unique features, Ultimate Fields also supports administration columns, REST API support and WordPress SEO Integration
Front-end forms
Just like ACF, Ultimate Fields can display the same forms from the back-end in the front-end. Unlike ACF, those support not only poet types, but also terms, users and options.
Future plans
Even though I expect that most people would request mainly features from other plugins, there are a few things that have already been planned.
Table-based storage
Many people would argue that the serialzed values, stores by Ultimate Fiels, are a bad practice. I would not disagree with them, however that is the way WordPress does it and I prefer to stick to that.
Long ago I decided that if I am to try to avoid storing serialized values, I’d do it poperly – with proper custom tables. There already is a hidden branch, where I wanted to make sure that the mechanism of the plugin allows the usage of custom tables easily. I am surely going to merge that into the master and finish it up, but I have not done it yet for a couple of reasons:
- I need to know that a sufficient amount of people are actually using Ultimate Fields before taking the custom tables route. Doing it for a couple of developers does not make sense, as it will involve a lot of coding overhead, as well as additional documentation.
- I want the process of switching from meta-based to table storage to be as seamless as possible. In the PHP API this would mean calling a single method of the location. In the UI it would mean checking a checkbox. Afterwards, the same functions like
the_valueand etc. should do the extra work behind the scenes and etc. The only issue that I currently have is that theWP_Meta_Queryclass would not allow me to hijack the queries, which I’d need to implement differently. When the time comes tough, I will submit a patch to the core repo and I doubt it’d have any issues passing through.
Gutenberg
We all know it, Gutenberg is coming and every plugin should be ready for it before WordPress 5.0.
Ultimate Fields, even though some may argue that cusotm fields are against the Gutenberg ideology, will have full Gutenberg support. This will (most probably include:
- Old-school meta boxes: Even though the Gutenberg team implemented a fallback for metaboxes, there is still some work to do for developers like me. This mainly includes re-implementing the rules for post parents, levels, terms, etc. This has already been done and is actually live.
- Field blocks: Ultimate Fields will allow fields to be added as a block in Gutenberg. This means that the preview in the back-end will just show the fields, while the front-end markup will be rendered through a shortcode-like callback function.
- Block fields: For those blocks, the block implementation will be left up to you (the developer), while you will be able to use a HOC in order to display fields in the sidebar while the block is being edited.
There are still some details, like validation, that need to be implemented in Gutenberg before the second two options can be fully functioning and published live.
A framework
Because I know that sometimes a site requires a rigurous amount of Custom Fields and using standard functions can get to be quite a messy way to deal with them, I released Rila, a framework for OOP theme development. At the moment of release, the framework was mainly suitable for ACF, but with a couple of mods it is also Ultimate Fields-compatible.
Currently I am working on Rila 2 (as its internal name), which is more than half-way finished. It is built tightly around Ultimate Fields and once online, will allow for extremely structured themes, which are easy to start. If you are curious about it, just send me a message somewhere and we can discuss it.
Further ideas
Of course, those two are not the only things about the plugin that can be improved, but the rest will be 90% based on user requests, which is why the Feature requests forum exists.
Conclusion
I really like where Ultimate Fields currently is in terms of features. Of course, there are a lot of small things in the plugin, which could compell people, as well as other things which could possibly repel them.
Even if Ultimate Fields weren’t better than the others, which from my perspective it is, I basically do not see any issues with more competition. Does the fact that Mercedes-Benz and BMW are making awesome cars mean that Audi should not try? I do not think so.
As you see, I did not write anything about why Ultimate Fields is the right plugin for YOU. I will always prefer to let you decide for yourself which is why I created a comprehensive demo of the plugin.
If you go to https://www.ultimate-fields.com/demo/ and register, you can get a personalized demo website, where you can play with Ultimate Fields for a few minutes. The website will use the Ultimate Fields: Showcase theme, which is hosted on GitHub and includes modules with elaborate examples and documentation, in order to let you know how to create fields and use their values.