For years the trajectory of Advanced Custom Fields (ACF) was a rock solid, reliable, slow progression that everyone took for granted. After the recent ACF sale to Delicious Brains there was a brief time when the future of the ACF lifetime licenses were in doubt. It was as if people woke up from a deep sleep and realized that they better be paying attention to the options.
And there are really only four options: ACF is number one with over a million active installs, Meta Box is number two with more than 600,000 active installs, then comes Toolset where we don’t know their number, and finally there is Pods with more than 100,000 active installs.
I remember the Avis Rental Car commercials when I was growing up. Avis was the number two company and their slogan was “we try harder.” The point being that they were willing to go the extra mile and do more than then other guy to get your business. Well, that is the impression I’ve had with Meta Box. The architecture is very modular and initially had a very strong developer focus, but was light on the GUI. The past several years this has shifted to add more convenience features while preserving the options developers appreciated. For example, the Meta Box All In One Plugin does away with the need to install each modular extension one by one, there have been many user interface improvements, they have released addons for popular page builders, and Meta Box has had a number of aggressive sales.
The Meta Box team just released a new extension, an ACF migration utility that migrates ACF field groups and custom fields to their Meta Box equivalents. I was curious how this worked and so created a test site to try it out. In this post I’ll walk through the process, which I hope will be helpful and provide an overview of the steps and a sense of what to expect.
While everyone hopes that the process of migrating from ACF to Meta Box is as simple as upgrading a theme or plugin, the truth is that behind the scenes it is a more complex procedure. I would suggest that you run through the process on a testing or staging site before doing it on the live site. Also, a good backup is essential.
The migration functionality is packaged as a free Meta Box extension that you can download from the WordPress.org plugin directory. If you have the Meta Box AIO (All in One) extension then the ACF Migration extension is included in that. The extension can be used with both ACF free or pro. It is worth reading the migration documentation before starting. When you run the migration process Meta Box tries to map the ACF data types to the corresponding Meta Box versions. A surprisingly large number of ACF field types can be migrated:
When you migrate you need to keep ACF enabled and you need to have the Meta Box extensions active that correspond to the features being migrated. For example, if you set a location in ACF to have the field group show in taxonomies, then you need to have the MB Term Meta extension active.
There are some ACF field types and features that are not migrated and these include:
The documentation has a discussion of field type mapping, what can as well as what cannot be migrated, so it is a good idea to look it over before starting.
I created a test site using the Page Builder Framework theme, CPT-UI, and Advanced Custom Fields Pro. CPT-UI is used to setup the Custom Post Types Books and Book Authors and the custom taxonomy Genres that is associated with Books. ACF is used to to create a field group for each Custom Post Type.
I tried to have a variety of field types. The field group for Books has these ACF fields, which include a post relationship field to Book Authors, a date field, a number field, and a repeater field.
The repeater has a select list field with options for the book format (print, audio, ebook) and a number field with 2 decimal places for the price for that format.
The Book Authors field group has a URL field, an Image field, and a post relationship field to Books.
Here are the Book fields in the editor where you can pick an author, there is a date picker for the publication date, a number field for the reviewer rating, and a repeater field with three formats / prices entered.
Here are the Book Author fields where we have the URL to the author’s website, the author’s photo, and a place where you can pick the author’s books.
Running the Migration Extension
I installed the Meta Box plugin from the WordPress plugin directory. It has more than 600,000 active installs. It also has a good user review rating with 119 five star reviews.
I noticed that the team is active in the support forum helping users.
I downloaded the MB All in One plugin from my account area on the Meta Box website. I installed and activated it.
As per the documentation instructions, I left ACF activated.
When you activate Meta Box and MB AIO you get a admin menu for Meta Box. I didn’t see the migration option so I checked the list of extensions and saw that I needed to activate it.
After activating it I still didn’t see it, so I refreshed the page and it showed up. Here I am on the migration screen. There is some information, and a button to migrate.
I start the migration and it appears to be checking all the posts.
When it finishes there is a “done” message. It took about a minute. I disabled ACF as it should no longer be needed. Note that we are still using CPT-UI for the Custom Post Type and Custom Taxonomy definitions as these are not migrated and we haven’t set them up in Meta Box.
Checking the custom fields in Meta Box we see that the two field groups appear.
Looking at the Book fields they are of the correct type.
The ACF repeater field is now a cloneable Meta Box group field with two subfields.
The definition of the subfields looks good.
The Book Author fields also look good.
Looking in the editor at the Book field group, everything looks good.
The same with the Book Author fields. These are also correct.
The migration was a success.
Recreating the Custom Post Types and Custom Taxonomy
Since I have Meta Box installed, I think I’ll recreate the Book Custom Post Type, Book Author Custom Post Type, and Genres taxonomy using Meta Box. That way I can disable CPT-UI. I take note of the name and slugs on these so that I can recreate them exactly the same. I then disable CPT-UI and go to the Meta Box Post Types menu. I create the Book and Book Authors Custom Post Types and the Genres custom taxonomy from the Meta Box Taxonomies menu.
I check under Books and see all of the Book records listed correctly.
All of the Genre records are listed correctly also.
And the Book Authors are showing correctly as well.
The migration was successfully completed!
Discussion and Conclusions
When reading the documentation I had only a vague notion of what was involved and what it would look like, so I wanted to walk through the steps. I modified my usual Books Custom Post Type quite a bit so that there would be more field types involved and thus a better test.
I migrated over the field groups for two Custom Post Types. There were post relationship fields, a repeater field with select and number subfields, a date field, a URL field, a number field, and an image field. These all migrated successfully. I needed to recreate the Custom Post Types and custom taxonomy manually, but that was fairly straightforward and also worked fine.
People who are considering switching to Meta Box should realize that it is not a clone of ACF. Meta Box has a different architecture and does some things differently, so there is a learning curve. However, Meta Box has pretty good documentation, responsive support, and an active Facebook group, so there is help if you need it. It is also good to note that Meta Box is not as well supported by page builders and third party tools as ACF, though the team is working hard to bridge that gap.
The Meta Box team recently added support for Open Street Maps. The team is working now on an Oxygen integration. Further, they just released this ACF migration extension. Meanwhile ACF had a minor release that fixed some bugs and made some existing features work better. Returning to the discussion at the beginning of this post, it sure seems that the Meta Box team is trying harder to add new functionalities and features. I appreciate this and am happy to see a product that doesn’t rest of its laurels, but continues to grow and improve. So, that is my walk-through of the ACF to Meta Box migration process. I hope you found it helpful. I’m curious now that there is a migration extension, if you will be switching to Meta Box? Please let me know in the comments.