How to Use Genesis eNews Extended with Constant Contact

Why You Want the Genesis eNews Widget Extended for Constant Contact

The more I have to work with Constant Contact, the less I like it, but it’s the email service provider of choice for many of my clients.

Unfortunately, its WordPress integration options are a bit unfriendly. The official Constant Contact plugin hasn’t been updated since June 2013. It’s a hugely heavyweight plugin that loads your whole list of contacts into your WordPress admin interface and sucks up a lot of time syncing it. Plus the form designer creates sign-up forms of sufficient hideousness that the only people I know who have it installed gave up and just used a text widget with a subscribe button.

Constant Contact Sign-Up Button on website

Speaking of subscribe buttons, I think there was a time when you could actually embed Constant Contact sign-up forms on your site, but not any longer. You have the option of creating buttons or embedding links. Or you can create QR codes. The basic buttons are exceedingly plain and ugly. This is about as attractive as you can manage to make one, and it required some custom CSS, because the only things you can adjust in the button designer are the colors and shape of the button.

Constant Contact Button Designer

And, as you notice, you’re stuck with that “For email marketing you can trust” tagline at the bottom, which is nonsensical when applied to the client company as opposed to Constant Contact itself. They should have at least included their name with it.

As if this weren’t all annoying enough, Constant Contact makes it difficult to use alternative methods of signing up. They don’t provide a guide to the information you’re going to need to include in a third-party form. And, as I discovered recently when someone complained about the CAPTCHA on the form on a client site, that information has changed in the past year or so, since the time the Constant Contact tutorial was provided in the support forum for the Genesis eNews plugin.

Figuring Out the New Formula for Constant Contact and Genesis eNews Extended

My client sent me the new button code and I had to piece things out from there, based on the information that had been filled out in the existing Genesis eNews Extended widget, which had been filled out in accordance with the tutorial mentioned above. That worked fine–but the sign-up form it led to included a CAPTCHA form that one person had complained bitterly about. When my client queried Constant Contact, they explained that this was the old form; on the new form the CAPTCHA was hidden and humans didn’t have to deal with it. This was obviously to be preferred. (I detest CAPTCHA.)

I certainly didn’t want to regress from the existing eNews Extended widget to a basic Constant Contact button, so I needed to figure out how to update the information in the widget. It was not immediately apparent how to do that. I took a look at the source code for the actual sign-up form, trying to spot hidden fields, but in fact there were numerous hidden fields for each input field, and none of them resembled the hidden fields of the former widget.

Finally I noticed a correspondence between part of the URL in the button code and the existing hidden fields. I speculated that the other variables in the URL might be additional hidden fields, and decided to test this theory by adding each of them to the “hidden fields” box of the widget, following the same formula:

<input type="hidden" name="p" value="oi">

The process was a bit finicky, but it worked. I tried it later on a second website, where I had been unhappy with the way the admittedly lightweight CC widget displayed, and it worked there, too. It’s actually a bit easier if you copy just the link and not the button code.

Step-by-Step Guide to Setting Up Genesis eNews Extended for Constant Contact

1. Go to Constant Contact and copy the “Share Sign-Up Form” link

Constant Contact Share Sign-Up Form

If you don’t have direct access to the Constant Contact account (I didn’t in the case of the first client), copy the link from whatever code the client sends you, or ask the client to send you this link.

The full link for this particular form looks like this:

2. Paste this URL into a text editor

Using a text editor will save you hassle vs. using something like Word. If the URL is not hyperlinked it will be easier to copy different sections.

3. Copy the first part of the URL into the ACTION box of the Genesis eNews Extended Widget

Note also that your E-Mail Field should have “ea” in it, to transfer the content across. I haven’t yet figured out what to put in the First Name and Last Name fields. I’ll work on that. But those fields appear on the CC form later anyway.

Genesis eNews Form Action field for Constant Contact

 4. Break down each of the remaining elements of the URL into hidden fields, as follows:

<input type="hidden" name="llr" value="mykivsmab">
<input type="hidden" name="p" value="oi">
<input type="hidden" name="m" value="1113022802700">
<input type="hidden" name="sit" value="4zd479xhb">
<input type="hidden" name="f" value="e189675b-6db2-4f5e-a1a5-bf39db3d4399">

5. Enter these in the “Hidden Fields” box in the Genesis eNews Extended Widget.

Hidden fields entry for Constant Contact in Genesis eNews Extended widget

6. Save the widget.

Here are two different Genesis eNews Extended widgets connected to Constant Contact on two different themes:

Genesis eNews Extended widget for Genesis eNews Extended widget for

Neither of these is a miracle of original design, but both fit better with the themes of their respective sites than the default Constant Contact button is, and allows for a more customized message.

But give me MailChimp any day.


Why I (Almost Always) Avoid Affiliate Programs

Affiliate program offerings from some WordPress-related businesses.

Affiliate program offerings from some WordPress-related businesses.

I’ve been meaning to write a post about affiliate programs for a while, but the message I received this morning through my website contact form really kicked me into gear on it.

Hello Friend, I noticed you are promoting Backup Buddy. I have a tool that does the same thing with double the commissions paid. If you are interested, I’ll send you a review copy upon request.

Eeewww. I’m going to change which product I recommend just because your payouts are bigger? Read Full Post »

WordPress Manual No Longer Missing

When I agreed to take on the job of technical reviewer for WordPress: The Missing Manual (too lazy to put in an affiliate link, but you can read about the project in my portfolio), part of the promised compensation was a copy of the book after it was published.

Photo of WordPress: The Missing Manual trade paper edition

The publication date came and went, and no book appeared in my mailbox. I was reminded of this fact when someone posted an interview with the book’s author, and was just about to ping my contact at O’Reilly when he emailed me to ask my opinion about another proposed WordPress book and I was able to get the problem sorted out. (As for the proposed book, it’s a potentially interesting idea, but still only an idea, and I wouldn’t be the one writing it, so I won’t comment further.)

WordPress Missing Manual Credits


The book itself arrived in the mail a few days later, with my name and bio in the credits. Of course, if I’d realized they were going to lay it out quite as they did, I would have left off the “rhymes with sketch” part, because it looks a bit odd coming after the description of what I did. To me, after so many years of using “rhymes with sketch” as a pronunciation guide for my name, it seems obvious that this phrase should be kept with my name, just as if it were “Jr,” but I suppose it wasn’t obvious to the typesetter.


It’s hardly a standard suffix, after all, though in this era of audio and video media, people like me have to provide such glosses in self-defense, or hear our names mangled and lose the possible marketing value of public mentions.

Anyway, I think it’s a solid book for those who are new to WordPress, whether they use or  I enjoyed working on the project and appreciated the author’s willingness to listen to suggestions. I’ll  just have to think of a better way to format my mini-bio so I can avoid having my pedantic little toes curl next time I see my name in print.


Places You Don’t Expect to Find Your WordPress Consultant

Sallie Goetsch preparing to photograph solar panels.

A better title for the post might be “Places your WordPress consultant shouldn’t go when she is developing sciatica,” because I’m sure it didn’t help. Strictly speaking, carrying a heavy prosumer camera up a ladder has nothing to do with either WordPress or web development, but it has a lot to do with making sure the client gets the best possible website. Read Full Post »

How Long Does It Take to Get Good at WordPress?

MediaBistro class website header

During the final discussion section of my most recent MediaBistro WordPress class (October-November 2012), one of my students unintentionally asked me a trick question: “How long did it take you to get good at WordPress?”

My first thought, honestly, was “Wait–am I good at WordPress?” Then I realized that she probably didn’t mean Andrew Nacin good, and might even mean “How long did it take not to be a hopeless n00b?” So I asked her to define “good.”

“Enough to be happy with a site you created and others said it looked good.”

Okay, now here’s the difficult part.

First, those are actually two different standards. You and your clients will almost inevitably occupy different positions on the perfectionism spectrum. They might be satisfied well before you are, or you may encounter that blessedly rare client who is never satisfied. In general, I tend to want to build Cadillac websites even when clients are only asking (and paying) for Chevies, but I have had a few thoroughly nit-picking clients. (Clients, and of course the people who use their websites, are the main “others” whose opinion of the sites matters.)

Second, the first time I ever built a site with WordPress, I was happy just to have built it. The year was 2005 and WordPress was only on version 1.5. Prior to this version of WordPress, there were no pages, only posts. Themes with different templates for different types of content (index, single posts, categories, pages, etc.) had just been introduced.

It was not possible to build the kind of site that you can build with WordPress today. WordPress was still a blogging tool, not a proper content management system. To build even the predecessor of the kind of site that my student was talking about, the kind of site she wanted for herself, I actually had to wait for a few years.

It was 2007 when I first started to build actual websites with WordPress. That was the year that WordPress started out on its rapid growth curve: 2.1, 2.2, 2.3. Then WordPress 2.5 burst onto the scene in 2008, and things really started to get interesting. It was around then that I started moving away from building HTML sites.

I didn’t actually start breathing and sleeping WordPress until 2009, after joining (and then getting recruited to organize) the East Bay WordPress Meetup, but it really wasn’t a question of how long did it take to master WordPress theme design, but how long did it take WordPress to become a tool for building sophisticated websites.

If you start out knowing some CSS and HTML (and at the beginning I knew more HTML than CSS, having begun my web adventures in the very early days before CSS was even thought of, never mind PHP), it’s not hard to customize themes, and the invention of child themes combined with custom CSS plugins (I do find that aspect of Jetpack very handy, particularly for testing) saves you from having to reinvent the wheel.

If you don’t know anything about any of those things at all, and you want a custom site rather than an existing theme with a bit of tweaking, you’re going to have to spend a good number of months devoting yourself to learning some basic skills as well as the time you need to master the WordPress-specific material. If you devote several hours to it each day, you’ll get to be good at it quickly. If it’s only an hour here and there separated by weeks, you’re likely to struggle.

But at least you no longer have to wait for WordPress to catch up with your aspirations.

A Very Strange Problem

A week or so ago now (time gets away from me in the most appalling fashion) I was about to post something on my personal blog when I encountered an unexpected problem. I got an “Error establishing database connection” message. Say what?

This frequently means there’s something wrong in your wp-config.php file, or maybe your .htaccess file. The problem is, that site, and this one, are part of a WordPress Multisite installation, and there was nothing wrong with most of the other sites, including the top-level site, Rhymes with Sketch. And sub-sites in a Multisite installation don’t have their own wp-config.php or .htaccess files.

Like any sensible person, I asked Mika Epstein (better known as Ipstenu) and Ron and Andrea Rennick for advice. Ron told me to check the database tables for the affected site, so off I went into phpMyAdmin to take a look.

I couldn’t even see the tables in question. I got a big red error message saying that they were damaged and I would have to repair them. But there was nothing within phpMyAdmin that would let me repair them.

Feeling slightly panicked, I turned to Google. (By this time it was late enough in California and far past the Rennicks’ bedtime in Canada.) I learned that I needed to log into cPanel and go to the MySQL management page. The solution to my problem lay in something I’d never paid any attention to before:

MySQL database check and repair tool

When I checked the database, I found all kinds of errors, not just in the tables for the personal blog, but for one of the other sites. Clicking the “Repair DB” button fixed everything, though.

I did look at my error log, and found that there were memory problems and, well, enough other things to make it a very large log file. In my general state of overwhelm I deleted the log file rather than studying it, so I’m not sure quite what went wrong to trigger the problem.

Since it was a very strange problem, however, and not one I’d heard about before, I thought I should write something about it in case anyone else had this issue, either with Multisite or single installations.

What the heck is a lucky URL?

The folks over at AppSumo are having a contest, the prize for which is lifetime free hosting from WP Engine. I’ve had clients use WP Engine, and it seems to be pretty good. What distinguishes them from other managed WordPress hosting companies is the fact that you can actually get to your database.

I don’t have the same warm fuzzy feelings about WP Engine that I do about, but would certainly recommend them to the right clients, and I wouldn’t turn down free hosting, though I somehow suspect they are not offering multisite hosting in this contest, so I couldn’t use it for my own sites.

Anyway, as part of the contest I am supposed to share my “lucky URL,” so I guess this is the place to do it:

Setting Up DNS and Email on has changed more than its hosting panel lately: they have a new policy on e-mail, which is to say, they no longer provide email service to their clients. This makes things considerably more confusing for the non-technical, so I’m providing a tutorial for my MediaBistro students and anyone else interested on how to get things set up. Read Full Post »

Review: Teach Yourself Visually WordPress Second Edition by Janet Majure

Teach Yourself VISUALLY WordPress, 2nd Edition
By Janet Majure
Indianapolis: John Wiley & Sons, 2012
ISBN: 978-1-118-197-87-5

One of my graphic designer friends raved about the first edition of this book, and I can see why. “Visual” is not an understatement with this series: it includes almost more images than text, and in bright full color, too. The illustrations and well-laid-out text boxes are certainly one of the book’s great strengths. Though a few of the screenshots are too small to be read at the size they appear in print, most of the illustrations aid considerably in following the steps in each chapter. The “Tips” boxes that appear at the foot of many pages to answer frequently asked questions are also very helpful.

Chapter 1, “Introducing WordPress,” helps you decide between and self-hosted WordPress (commonly referred to as, explains some core WordPress terms like pages, posts, permalinks, and the dashboard, and provides tips on choosing strong passwords, specific blog topics, and good site names. Many of these are not WordPress-specific tips, but they are important considerations for people who want to build good blogs or websites.

Chapter 2 focuses on setting up a blog. If you already know you want to use self-hosted WordPress, you can skip this. If you’re looking for a book that can help you with your site, however, you’ll be glad to know that this one addresses in all but a few chapters.

Chapter 3 covers both manual and “one-click” (control-panel based) installation of WordPress on your web server, using Bluehost and Simple Scripts for its screenshots. (The process is essentially the same for other hosts using Fantastico or Softaculous.) There’s a troubleshooting section for common installation problems. Then you have an overview of the time and date section of the general settings, followed by a tour of the dashboard home screen, the admin bar, and the user profile page. There’s no mention at this stage of other settings, even privacy (it’s often a good idea to hide a site at such an embryonic stage from search engines). Instead, before moving on to any of those things (they are coming in Chapter 4), the author suggests changing themes.

Really? If you know ahead of time what theme you’re planning to use, fine, activate it. But if you have no idea, you could spend hours down the rabbit hole trying to decide and getting nothing at all done about setting your site up. The theme is one of the easiest things on your site to change, after all, unless you are using a theme that relies heavily on custom post types (an argument for creating those within a plugin). That section of Chapter 3 seems oddly out of place.

Chapter 4, “Know Your Administration Tools,” addresses the rest of the settings (reading, writing, discussion, privacy, and permalinks), though without mentioning the all-important Screen Options tab to control which modules appear on your Dashboard in the first place, and which metaboxes appear on other screens throughout the administrative interface.

Chapter 5, “Create Written Blog Content,” walks you through the creation of pages and posts, including using’s Writing Helper. Here at last we meet the Screen Options tab, without which many once-standard parts of the new post/edit post screen would be hidden from us. (If you’ve used WordPress in the past and suddenly can’t find the Excerpt, Author, Slug, Custom Fields, or something else you’re looking for, check the Screen Options.)

Chapter 5 also covers the Quick Edit feature and the too-often-overlooked Paste from Word button (illustrated on p. 100), QuickPress, PressThis, mobile apps for posting to WordPress, offline blogging clients like Windows Live Writer, and importing posts from Blogger. Credit for thoroughness.

Chapter 6, “Create Visual and Audio Content,” starts by asking the reader to think about file size, load times, and, well, good taste, when it comes to adding media, and then sensibly recommends editing, and particularly re-sizing, images before uploading them to WordPress.

Curiously, there’s no mention of the problem that WordPress has with embed codes in the discussion of embedding slideshows from PictoBuilder (a recommendation made primarily, I think, because the author hasn’t discussed plugins yet) or videos from YouTube. In case you haven’t faced this problem yet, if you switch from the HTML editor to the visual editor after pasting in an embed code, WordPress will try to “clean up” the code, with the result that the code won’t work anymore. Ooops.

Equally curiously, there’s no mention of the oEmbed function (, which allows you to simply copy the URL of a YouTube video (or a video from Vimeo, or a photo from Flickr, or, now, a tweet from Twitter) and paste it into the HTML editor on its own line. Presto, the video (or whatever) appears, sized exactly to fit your content area. A neat trick, first introduced in WordPress 2.9. It’s as if this part of the book has not been updated since the first edition.

Chapter 7 addresses widgets and plugins. Since users get access to a number of widgets that substitute for plugins, the first part of the chapter is relevant to them, too. The widget section treats adding, rearranging, removing, and reactivating widgets very thoroughly, including the use of text widgets and screen options for text widgets.

The plugin recommendations are a bit lackluster, or at any rate dated. Share and Follow is no longer in the WordPress Plugin Repository (a pity: I liked it and still use it on several sites). Sexy Bookmarks changed its name to Shareaholic. The most popular free backup solution these days is BackWPUp, which backs either (or both) your database and files up offsite to a variety of places, automatically, on a schedule you specify. Joost de Valk’s WordPress SEO plugin has pretty much eaten All in One SEO’s lunch.

Missing from the chapter are any instructions on deactivating and uninstalling plugins, which is a bit odd given that the widget section showed readers how to remove widgets. Nor is there any mention here of plugin conflicts and how to troubleshoot those.

Chapter 8 collects a number of not-precisely-related topics under the rubric “Make Your Content Appealing.” This starts out with checking your spelling, using sub-headings and bulleted lists to break up your text, making better use of your images, and dividing long posts with the <!–more–> tag. Then it moves on to categories and tags, and finally it concludes with creating custom menus.

Conceptually, I would class categories, tags, and menus all under “Organizing your content.” I would prioritize it above “Polishing your content,” which is what the first part of the chapter talks about. In fact, I would probably talk about creating categories and tags back when I started talking about creating posts, because it’s a pretty good idea to start coming up with categories before you start producing a lot of content, and not after. (Trust me. I’ve done it. I started blogging before blogs had categories, never mind tags. Adding them later was ugly.)

Also, although there is a brief mention in the “Menu” section of adding categories to a custom menu, there is no mention of this in the box on “Category Display” on page 168.

This chapter does demonstrate the Bulk Edit function, which is useful for adding categories or tags to groups of posts after the fact.

Chapter 9, “Build Traffic to Your Blog,” also seems to combine at least two different subjects. Most of the topics aren’t really about traffic—getting visitors to the site. Instead, they’re about engagement: things like comment policy, e-mail subscriptions, ratings, surveys and polls. It makes me wonder whether the publisher set a limit for the maximum number or minimum length of chapters.

The topics themselves are generally relevant and accurate. Though not everyone publishes an old-fashioned blogroll these days, the Links function in WordPress can be used for a number of things, since many people want to display related resources or links to other sites of their own. The section on creating a comment policy is particularly good. The recommendations for commenting on other people’s blogs are also sensible. The author covers comment moderation in great detail.

The section on RSS is slightly outdated. RSS icons no longer appear in browser address bars: you have to go hunting for them in the bookmarks section. Otherwise, however, the instructions are clear.

The book goes into considerable detail about how to embed a widget from Twitter, though it doesn’t provide comparable information about other social networks. I don’t myself like Twitter’s widgets and prefer to use WP plugins for Twitter feeds, but that’s a matter of taste; the instructions are accurate. And since Facebook changes the way it does things every other day, it might be hard to include instructions on how to include your Facebook fan page box, etc. Best just go to FB for those instructions.

The general SEO guidelines are adequate, if basic. One thing worth noting and not mentioned is that since WordPress 3.3, the problem with the /%postname%/ permalink structure has been fixed, and this is the permalink structure favored by Google’s Matt Cutts.

The section on polls and ratings uses PollDaddy, available on or through the Jetpack plugin, for its example.

Chapter 10 is called “Tweak Your Theme.” We haven’t heard more than a word or two about themes since the end of Chapter 3, when the author hurried us away from Twenty Eleven as fast as we can go. Now, however, she’s using Twenty Eleven for her screenshots to demonstrate custom headers, header text color, theme options, custom backgrounds, and so forth.

Post formats also make an appearance here, though, as there is no discussion of actually creating new templates for said post formats, they probably belong in Chapter 5, or would if Chapter 5 focused on posts and not on written content per se.

The overview of CSS provides a starting point for the total beginner. I’m not sure whether someone who is that much of a beginner should actually be messing about in the theme editor or attempting to create a new page template, but hey, as long as you have backups…

The final item in the chapter, “Add a Category RSS Feed Link,” is a useful thing to know how to do, but not a theme tweak. Your feed URLs are independent of your theme. The only thing that makes this part of your theme is putting the link in a widget, because when you change themes, all your widgets get moved to the “inactive” section.

Chapter 11, “Content Management,” leaves out about 300 pages. Where is the section on custom post types? On handling sites with hundreds of pages? On…oh, well. People who want to know those things will probably buy a different book. (Indeed, maybe I should shut up and write it.) Let’s look at what the chapter does cover.

User Levels and Capabilities

Up to this point, the book has assumed that there is one user, the site administrator. In many cases where WordPress is used as a CMS, there are multiple users, and most do not have administrator privileges, so the chapter begins with an overview of other user levels (editor, author, contributor, subscriber) and their corresponding capabilities.

Community Sites

For a simple community site, the author recommends using the P2 collaboration theme (, which allows people to post from the front page in a Twitter-like interface. She does warn that this might get a bit chaotic to moderate if you don’t manage who is allowed to register as a member. P2 is available on as well as for self-hosted WordPress sites. The plugins WP Mingle ( and WP Symposium ( get footnotes in a tips box, but without screenshots or instructions. Mingle hasn’t been updated since October 2011, while Symposium is more current, but I haven’t tried either and can’t speak to their ease of use.

The BuddyPress social networking plugin ( gets two whole pages. BuddyPress bills itself as a social network in a box, and it has phenomenal capabilities, but it’s pretty complex and by no means as user-friendly for your community members as, say, Facebook, even though it can do all the same things. How it works also depends on whether you have a single or Multi-site WordPress installation, and this book has yet to mention WordPress Multi-site. I’d recommend reading a BuddyPress book, studying the forums in detail, and maybe hiring a consultant unless you’re an experienced WordPress user with plenty of time for trial and error.

I’m not sure why the author picks Mingle Forum rather than bbPress for her example—perhaps because it coordinates with WP Mingle. (bbPress comes packaged with BuddyPress, but it is also available by itself.) The important thing to understand when installing any forum on your site is that it will require moderating.

The document management section on page 252 provides an extremely basic method for linking to uploaded files. It works, if that’s all you want to do. There are lots of WordPress plugins to help you with a more sophisticated level of document management. Try Docs to WordPress (, WP Filebase ( or WP Document Revisions (

The section on “Use a static page as your home page” on p. 258 needs to come with a warning. If you have a magazine-style theme, or anything else that uses a home.php file with a special layout, and you select this option, you will lose your fancy home page. (You can get it back again by restoring the “Reading” settings to their original state.) Make sure to read any instructions that come with your theme about how to set up your home and blog index pages.

I’m not sure I would class sticky posts as part of CMS functions—I would think they’d belong back with “Make Your Content Appealing” in Chapter 8. Creating a portfolio, on the other hand, is a good topic, but the actual section focuses primarily on theme choice, rather than on portfolio content types or categories.

Is advertising a CMS topic or a traffic-related topic? In either case, the author covers the basics of the types of advertising, the difference between and self-hosted WordPress regarding advertising, PPC programs versus affiliate programs, and how to insert Google ads and Amazon affiliate links into your site.

The chapter concludes with another two pages on e-commerce. As I said, the book is missing about 300 pages. Setting up shopping carts, never mind things like SSL certificates, is a pretty tricky business, and it’s really beyond the scope of an introductory book.

The final chapter, “Maintain Your WordPress Blog,” provides useful general tips about backups but less detail than I would like. (All right, I’m slightly obsessed. Almost no one covers this subject in enough detail for me. I spent years writing a blog all about backup.) There is, interestingly, no mention of Automattic’s VaultPress service (, which is dead simple to use, extremely comprehensive, and works with any hosting company. It’s also about $15/month at minimum, so you pay for that peace of mind.

The advice on cleaning up outdated drafts is good; even better would be a suggestion to clean up old post revisions. This requires a plugin or wading around in phpMyAdmin, but can save you a lot of space: we just cut a client’s database size in half by deleting old revisions.

I like the recommendation of the W3C Link Checker on p. 288, because I’ve run into some irritations with the Broken Link Checker plugin. (Sometimes it finds things again even after I’ve fixed them, and I’m not sure why.) And, of course, you can use the W3C tool if you have a blog.

I’m not sure I would put analytics tools under “Maintenance”—I would think that makes more sense under “Traffic”—but in any case the four pages on statistics provide a good overview of the subject.

The last two pages on troubleshooting are minimal, but good advice as far as they go. It might make more sense to put the section on “Get to know WordPress support options” right before this. There are some support options not mentioned, like local Meetup groups, the WordPress group on LinkedIn, and Twitter, where a lot of WordPress developers hang out. If you have really borked your site, one of those channels should lead you to paid help.

Overall, I would recommend this book to beginners, particularly those who are visual learners, and particularly those who want to set up a blog or to use Though it doesn’t cover all the material in the same order I would, it covers everything you need to know to get started and provides a sense of some of the other things you can do with more experience. It ought to provide a few more “Kids, don’t try this at home” warnings and update a few details, but in essence it’s a good book for someone trying to find her way around the WordPress platform and learn something about blogging and website design at the same time.

How to Import Joomla Content Using the WP Importer Plugin

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.)

BACN Home Page January 2012 (Joomla! 1.5)

BACN Home Page January 2012 (Joomla! 1.5)

Joomla! 1.5 article manager

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.

mos_content, the database table containing Joomla! 1.0 content

mos_content, the database table containing Joomla! 1.0 content

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.

Exporting the Joomla! 1.5 jos_content table as an SQL file

Exporting the Joomla! 1.5 jos_content table as an SQL file

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.

Import table with WP Importer plugin

Step 1: Import Table

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.

WP Importer post config screen

Mapping database field tags on the post config screen

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.

Joomla! content imported as WordPress posts

Joomla! content imported as WordPress posts, manually categorized

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.