For my sins (I learned this phrase from my dissertation advisor back when I was in graduate school), I am on the board of the Bay Area Consultants Network. Actually, I love BACN and have missed possibly 5 meetings since I started going in July 2003; if you are a consultant, coach, or other solo professional in the San Francisco Bay Area, I recommend you check them out.
Anyway, we are in the process of converting our existing Joomla! website to WordPress, as who wouldn’t. This is partly to make it easier for people other than me to add and update content, and partly because I am the board geek and I think WordPress suits BACN’s needs better. The problem with the site right now isn’t so much Joomla as the fact that it’s very hard for people to find what they’re looking for. (Well, that and terrible SEO, which has something to do with the type of content we usually post and something to do with the not-at-all-search-engine-friendly-URLs.)
Then go into your WordPress install to your SoftWarp | WP Importer settings. (You will need an activation key, which you get by submitting your e-mail address. This did not work from my LAMP server. Apparently the program requires cURL. I set it up on a dev server here on WP Webhost instead.)
The problem for someone developing a new site is that we have content going back to 2002, and importing from Joomla! to WordPress is not common enough for the WordPress foundation to build its own importer. I had tested the Joomla 1.5 Importer a while back, and it worked fine, though it was a bit slow as it required you to import one category at a time. That plugin has only been tested up to WordPress 3.0.5, however, and not updated since January 2011. (Yes, it has taken us a long time to get going on this project. Non-profit. Volunteer. Committee. Need I say more?)
So I did a little searching to see whether there was anything more recent and came across a plugin called WP Importer from SoftWarp. This plugin is not in the WordPress Plugin Repository, I presume for the very good reason that it’s marketed with decidedly black hat overtones. (The copy and samples are hilarious, though.)
The plugin’s documentation assumes that you’re importing a CSV file, and also that you’re using it in conjunction with another of the developer’s plugins, so using it to import Joomla! databases took a bit of figuring out. Since I can’t be the only person on the planet who will ever need to do this, I figured I would document the process here.
First, go into phpMyAdmin and open your Joomla! databases. If you are used to WordPress databases, you will be amazed at how many tables there are in a Joomla! database. Possibly because these tables don’t remotely match up, you can’t use the WP Importer plugin to import a complete Joomla database. Instead, you need to locate the database with the content in it.
In Joomla! 1.0, this table is called mos_content. In Joomla! 1.5, it’s called jos_content. (I haven’t worked with more recent versions of Joomla!, so I don’t know whether they’ve changed the name, but I bet it’s still nnn_content.)
Export this table as an SQL file and save it to your computer.
Log into your WordPress installation and go to SoftWarp | WP Importer. If you have not done so already, you will need to activate the plugin. The plugin is free, but you need to provide a valid e-mail address to receive the activation key. This did not work on my LAMP server; something to do with the need for cURL, which is also required to make the plugin work. I set up a dev install here at WPWebhost instead, and it worked fine.
First you import the table. In this case, you need to select SQL as the format of the file.
Once the table has been imported (which may take a while depending on the number of entries), you will be automatically transferred to the next screen. Here you get to drag the different database field tokens into the correct positions. This involves a little bit of guesswork if you don’t know Joomla! databases intimately, but it’s not that hard to figure out. The main thing to know in this case was that [[introtext]] had actually been used as the main body of the post on this site, with [[fulltext]] for additions on some pages, so both of those belonged in the “Post Body” field.
For some reason, which Joomla! experts will probably know, no section or category name info was saved in this table, only the category ID numbers, which weren’t very helpful to me, so I just let everything come in as “Uncategorized” and updated it later.
WP Importer imports all content as posts. Eventually, most of these items will be converted to custom post types based on the categories I assigned them, but I’m still building those out.
This doesn’t remove all the labor from the import process, but it’s certainly easier than copying and pasting, and it ought to work on any flavor of Joomla! database—and probably databases from any other content management system, as long as you can isolate the table with the content in it.