WordPress data is comprised of many different data types: posts, pages, taxonomies, users, etc. There are also custom data types created by 3rd-party themes and plugins.
Sooner or later, you will have to import data into at least one of these data types. When you do, you'll likely need an import plugin to help you.
In this article, we review one of the best-known WordPress import plugins: WP All Import. Let's see what it has to offer.
When importing WordPress data becomes necessary, users often make reactionary, short-term decisions about how to handle that task. If they need to import users, they'll buy a user import plugin. If they then need to import posts or pages, they'll buy a separate plugin for that, and so on.
The problem with this approach is that it forces you to use different plugins with different rules and interfaces when this really shouldn't be necessary. No matter what you're importing, it should require the same basic steps, even if some of the details vary, so you shouldn't have to seek out piecemeal solutions.
This is one of the main reasons that we're reviewing WP All Import. It allows you to import all built-in WordPress data types, as well as most custom data types created by 3rd-party themes and plugins, using the same interface and the same process. It also provides special support for plugins such as Advanced Custom Fields (ACF), Gravity Forms, and Toolset Types.
One plugin to rule them all, as a Lord of the Rings fan might say!
If you receive an import file from an external source, it may contain records that you don't want to import. For example, say you receive a list of WordPress users from another system, but you don't want to import that system's admin user(s).
Fortunately, WP All Import lets you do this very quickly:
You can also add as many rules as you need. Just separate each one with an AND or OR condition. For example, this is how your filter for users who are customers but not admins:
For more complex filters, you can even group filter conditions by indenting them, which is equivalent to using parentheses:
Here is the text version of this filter:
username(1) <> "admin" AND (userrole(1) equals "customer" OR userrole(1) = "subscriber")
WP All Import is the only import plugin that we've seen offer this level of filter sophistication. In our tests, we did not find a single filter requirement that we couldn't create using the preceding techniques.
The basic process of mapping incoming data elements to WordPress fields should be straightforward, and WP All Import certainly approaches it this way in its Drag & Drop interface.
As you can see from the image below, it positions the WordPress fields on left and the incoming data elements on the right. To map an element to a field, you simply drag it from the right and drop it onto the target field on the left:
Because some data types can have a lot of different fields, WP All Import groups related fields into their own sections. In this example, it has created sections for Customer Account Info, Billing and Shipping Info, and so on:
This helps you focus your mapping efforts.
In most cases, there is a simple one-to-one relationship between incoming data elements and target fields. However, sometimes you need the ability to combine multiple data elements into one field. You can even add literal values into the mix, too, as you see here:
All in all, we really like WP All Import's Drag & Drop interface. We especially like how it applies to all imports. Once you know how to import one data type, you know how to import them all.
When you receive an import file, the data inside it isn't always exactly the way you need it. Sometimes, a data element may contain multiple values that need to be split apart. Or it may contain an even more complex data structure, such as a JSON object, that needs to be parsed. Or perhaps it just contains certain characters that you want to delete.
When this happens, you don't want to be forced to edit the file manually before importing it. That's messy and error-prone. It also means you can never automate your import.
WP All Import takes a different approach. First, it lets you use built-in PHP functions right inside your target fields during the mapping process. For example, here we've dragged the title data element into a WordPress field, then wrapped it in a PHP str-replace() function to strip out any commas found in the text:
There are scores and scores of these built-in PHP functions, allowing you do almost everything imaginable with different types of fields, including text, numeric, date, and boolean.
If this isn't sufficient, WP All Import also provides an embedded PHP function editor that lets you create your own custom PHP functions:
These functions can perform any task you wish, including the use of conditional logic. Once complete, you can use them much like the built-in functions.
Together, these two capabilities let you correct any data layout or format problems as part of the import process itself, leaving you completely free to automate your import.
Most other import plugins do not offer this level of flexibility, giving WP All Import yet another advantage over its competitors.
WordPress taxonomies consist of categories, tags, and custom taxonomies.
At first glance, taxonomies may seem straightforward, but when it comes to importing them, they actually pose a few challenges. For example, do you import taxonomies separately or as part of another data type? How do you handle category hierarchies? What happens if you need to translate the taxonomies in an import file to the ones used in your system? How do you handle custom taxonomies?
WP All Import seems to have well-thought-out answers to all of these questions. For example, when dealing with category hierarchies, you can tell it to extract the hierarchies from a single incoming data element using a specific separator:
Or, you can manually map out the hierarchy using different data elements:
You can also map incoming taxonomy terms to your existing terms should the two differ:
When it comes to handling custom taxonomies, WP All Import will even standardize those. For example, here's how it handles the custom taxonomies for a real estate theme:
This is what you should expect from a truly professional WordPress import plugin. It makes the exceptions routine.
Importing images is another area that requires special handling.
The first issue is: what is the location of the images that you're trying to import? Are they already in your media library? Have they been uploaded in advance to your server but not yet loaded into your media library? Are they on an external server that is referenced in the import file by URLs? Are the URLs wrapped in <img> tags in text data elements?
A good import plugin needs to accommodate all of these possibilities, which is exactly what WP All Import does:
The second issue is: how are the images defined in your import file? Are multiple images stored in a single data element and separated by a character? Are they stored in different elements? Are they child elements of a parent element?
WP All Import also has a solution each of these scenarios. Here's one example:
You can read about the rest at How to Import a Variable Number Of Images Per Post.
What about image metadata? Yes, WP All Import handles that, too:
This is what consistently impresses us about this plugin. Its designers are clearly experienced (they've been doing this since 2011) and extremely thorough.
One of the great things about WordPress is its extensibility. 3rd-party themes and plugins can easily add custom fields and interfaces to support any desired functionality. You can also do this in your own system by using plugins like ACF.
The challenge for an import plugin is that it needs to be able to detect these custom fields and then populate them.
This is fairly straightforward when the import plugin creates an add-on for a specific theme or plugin in advance. But in a diverse and dynamic ecosystem like WordPress, it isn't realistic to do this for every new theme or plugin that is released. A more adaptive approach is required.
WP All Import provides that adaptive approach by automatically detecting any custom fields that are already in use in your system. During an import, it makes you aware of this fact when you expand the Custom Fields section of the Drag & Drop screen:
If you click the See Detected Fields button, you can then see the detected fields along with sample data drawn from your WordPress database:
At this point, you are free to replace the sample data in the Value fields by dragging and dropping incoming data elements into them.
That's it! WP All Import doesn't need to be preprogrammed in advance to handle these custom fields. It just needs to be able to detect some data for them (even if you just enter dummy data). After that, you can import data into them much the way you do the default WordPress fields.
Some WordPress imports are one-time events, usually occurring when you first set up your website.
Others need to be repeated on a regular basis. These usually originate from external sources or systems, such as 3rd-party marketing platforms or product suppliers.
WP All Import offers two methods of scheduling recurring imports. The most convenient one is to use their Automatic Scheduling Service at a cost of $9 per month. This service lets you schedule your imports from within the plugin's interface in only a few seconds:
When the import runs, this service will also verify that it has completed its task.
If you don't want to pay $9 a month, you can schedule your user imports manually by creating cron jobs on your server:
The method you use is entirely up to you. What we like is that, combined with flexible filters and on-the-fly data modification capabilities, these scheduling options make it possible to completely automate your imports.
WP All Import has been providing WordPress and WooCommerce users with data import, export, migration, and bulk editing capabilities since 2011. It has 100,000 active installs and 1,800 customer ratings, most of which are 5-star.
You can read the user reviews yourself at https://wordpress.org/support/plugin/wp-all-import/reviews/.
Our experience using WP All Import to write this article has been nothing short of superb. The feature set is comprehensive, especially for those aspects of data imports that can get a bit complicated. When we expanded a section in the plugin's Drag & Drop interface, we always found an option or setting that exactly matched our test situation.
Just as important, the interface is consistent, neatly organized, and highly intuitive. We especially noticed this when importing different types of data, as the knowledge we gained by importing WordPress posts was equally applicable to importing users and even taxonomies.
All in all, we give this plugin a 10/10
Import into WordPress From Any CSV, XML, and Excel
How to Import WordPress Posts with Images
The 4 Best WordPress Import Plugins
The 4 Best Plugins to Import CSV into WordPress
The 4 Best Plugins to Import Excel to WordPress
The 4 Best Plugins to Import XML to WordPress