WordPress’s hidden hazards for do-it-yourselfers, Part 4

Okay, troops. The final installment in the series here requires only that you slog through another 4,000 words from the master of verbosity, so buck up. Considering you’ve plowed through almost 12,000 words already (at least if you didn’t skip anything, you dirty rats), this is gonna be a cakewalk.
Go to: Part 1 | Part 2 | Part 3 | Part 4

Examples of plug-ins to remedy core WordPress deficiencies

Below are some plug-ins I’ve been pushed into using simply because something silly is either missing from core WordPress functionality, or is seriously deficient. Things that you would think would be — and should be — built in as standard, but where the developers are just being obstinate or clueless (pardon my presumptuousness). When it comes to the needs of the average user, code geeks truly are a different species often living with their heads up… er, in the clouds ;-).

  • 404page. Wouldn’t you think that the typically clunky, stock 404 (“Page Not Found”) error page would be easily user-modifiable to your own liking? I, for one, thought that. I’ll bet you think that too. Silly you and silly me for thinking something so obvious should be so easy. It ain’t. I kid you not, the WordPress developers apparently think you are just going to jump up and down with glee knowing you’ll need to larn yerself some of that thar PHP coding and go in like a surgeon to modify or code your own 404.php page to get the job done. And that you’re a chump if you can’t or won’t — so there.
  • The 404page plug-in makes it as easy as falling off a log. Just like it should be in the first place. Create your own 404 page the way you would any other WordPress page, use this plug-in to point to it so it’s substituted for the default version of the page, and you’re done. Slam dunk.
  • Broken Link Checker. If like me, you’ve ever used an application like Dreamweaver to create websites, you probably think broken-link checking is an obvious, standard feature that would be available with any capable web publishing software. Wrong-o. Sorry, the core WordPress developers don’t think like you and me.
  • Evidently you’re supposed to be so accurate that you never cut and paste a link erroneously, and links never go bad. Or maybe they think you enjoy blowing an entire weekend from time to time doing nothing but clicking on the links throughout your site to see if they still work or not. Because, well, because gosh, it’s just so cool that you can, like, click on a link on a web page and it might take you to potentially anywhere else in the cyberverse. I mean, wow, just WOW, think of the possibilities!

  • But if you have better things you’d rather throw away your time on, try out the Broken Link Checker plug-in. This guy has thought of just about everything. I don’t think it will disappoint you.
  • Late-breaking note: It appears that Broken Link Checker has been taken over by the ManageWP folks and is in the process of being folded into their service offering. (Meaning that instead of a plug-in, it would presumably function as a server-level task invoked individually as one service among others as part of their ManageWP suite.) As yet, with minimal web-searching, I haven’t been able to find a clear answer about what, if anything, will change, but this obviously bears further investigation. Follow-up (2017): Broken Link Checker now appears to be back in the hands of the original developer. Either that, or the previously reported transfer of ownership was confused or erroneous.
  • Clean My Archives and Archive-Pro-Matic. Okay, here’s one of my big pet peeves: The vaunted WordPress “experts” say that almost nobody (considerably less than 5%) looks through blog archives, and they can prove it by showing you their site logs. Silly wabbits. Did no one ever tell them how much the default WordPress archives suck? I mean, SUCK. Really suck. Badly. As in S-U-C-K suck. Big-time. Of course not very many people take the time to wade through traditional WordPress blog archives. They are hugely user-unfriendly, direspectfully, middle-fingerly unfriendly.
  • Listen up, class: How do users read on the internet? Answer: When people are looking for something on the internet, they don’t read, they scan. Only after they have found what they’re looking for are they then going to slow down and actually start reading.
  • The traditional default blog archive listings in WordPress simply are not scannable. At the least, you usually encounter a post headline followed by a few paragraphs of the body of the post before the “Read More” button, which can take up to a couple of screenfuls for each single post. And that’s the best-case scenario.
  • Often, each entire post is barfed up in an archive listing, depending on how a site or its authors create their posts. Talk about scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll, scroll. Then after five or ten posts, you click for the next page in the archive listing, and you scroll, scroll, scroll, scroll, scroll, scroll, scroll again. It’s like looking for a needle in a haystack. What code-geek nincompoop thought up that scheme?
  • And the only other thing besides this that some developers seem to have thought of is archives stuffed into the sidebar with little teeny triangles that you have to click on to open up each month and see the post titles. Which usually then close up again each time you hit the Back button to return after reading another post. Good gawd. More idiot geek stuff.
  • Here is how archives actually should be done: I call them “one-liner” archives — bulleted or date-numbered lists composed of single, consecutive post titles, each on a single line by itself, for the most part. (A runover line here and there is no big deal if each post title is punctuated with a bullet or date in front.) Line after line of them — grouped by subheadings for each month and/or year for chronological archive listings. Or grouped by category subheadings for an archive-by-category list.
  • If you do that, then more people will look through your archives, but if and only if, and not before. Get it? If you do, give Clean My Archives a try for chronological one-liner listings, and try Archive-Pro-Matic for category-based one-liner listings, and see if more people don’t start poring through your archives and sticking around your site longer. I think you’ll be very pleasantly surprised. See my own blog’s archives here for an example that employs both plug-ins.
  • Optimize Database after Deleting Revisions. Here’s another huge oversight by the core WordPress developers. You’ve been working on a post for a few hours, or off and on for a few days, whatever. You’re the conscientious or paranoid type, so you’re in the habit of saving your draft frequently. Or if like me, you need to publish the post periodically to check how the typography and formatting is looking as readers will actually see it, and then you return to continue editing (sometimes called “round-tripping”), you will accumulate a large number of post revisions.
  • One thousand one, one thousand two, one thousand three… Really, you probably only need the last five or ten or fewer revisions to fall back on. But like a forgetful pack rat with Alzheimer’s on steroids, WordPress just keeps racking up those revisions, never deleting any of them. Over time, all these revisions for all of your posts begin to clutter up your database to the point they can cause pages to load more slowly.
  • For that reason, or just out of a sense of good housekeeping, you would probably like to get in there and delete all but the last few revisions of your posts. So where’s the WordPress checkbox or admin screen for that? It took me a fair bit of looking around before the lightbulb went off: uh, gee, you mean none of the WordPress developers ever thought of that? Really? I mean, really? Guys, GUYS! (And most of them are in fact guys.)
  • Too much pizza, perhaps? Logic isn’t capable of explaining the runaway-post-revisions blunder. I vote for extraterrestrial influence. Or perhaps an oversupply of pepperoni pizza. Sorry, I know it seems amazing, but I am here to report back to you that the developers somehow just plain didn’t think of this. I actually went around to ask them but they had all gotten so wired up on Coke and pizza that their eyes were completely bugged-out and bloodshot, and they stared right through me like a bunch of crazed zombies. ;-)
  • With WordPress’s developers seemingly out to (a badly burping) lunch on this, unless you are going to jump in and figger out some MySQL, you need a plug-in like Optimize Database after Deleting Revisions or something similar. Unfortunately, you will need to learn at least a little bit about which of the database tables in WordPress you will want to optimize or not. But with this plug-in you can check off which ones you want to include in the process, and you can schedule optimizations to run automatically on a schedule so you don’t have to think about it.
  • Envira Gallery Lite and Envira Gallery Pro. One doesn’t have to be a graphic designer like me to recognize that WordPress’s built-in image gallery function is amateurish, and just looks bad. Why would anyone use it as is, when a great plug-in like Envira Gallery is available in both free and premium versions? If you care at all about how an even halfway decent photo gallery should look, a plug-in is required, no two ways about it. There are many other image gallery plug-ins available, but Envira Gallery seems to be taking the market by storm, and the premium version has worked very well for me.
  • WordPress Media Library organization just sucks. Again, the core WordPress developers have had another failure of both imagination and implementation here. WordPress automatically organizes your media library by month/year and that’s it. Did you somehow think you should be able to create your own media folders and organizational scheme? Turns out that you are not imagining this was overlooked. It was. Completely. Want to organize your images by project or type of image? Sorry, Charlie. No can do. At least not without a plug-in.
  • For example, with my car tag design portfolio or proofreading portfolio, I would greatly have preferred to create subfolders within the Media Library called something like “Car Tags” and “Proofreading,” respectively, and to upload all related images to each folder. This ability is particularly helpful if you work on projects in phases instead of completing each of them all at once.
  • Any scheme you like as long as it is month/year only. For example, if, after you have uploaded a batch of related images for a project, you then decide to move on for a while and work on a second project that requires images, and you upload those before coming back later to upload more images for the first project, the added images will be separated from the original ones in WordPress’s date-based organization scheme. Really, you should be able to group them all together by project or any other scheme you see fit.
  • The result: scattershot organization. So far my site is small enough that while the issue has been annoying, it hasn’t been a huge problem. But as I add to each portfolio over time, or create other pages with their own sets of images, it will likely become more aggravating. Already, the images for the proofreading portfolio are scattered about in the Media Library, interspersed with images for other projects, and I believe there are some images that have been uploaded but not yet used.
  • The way things are now with WordPress’s default date-based organizational scheme, when it comes time to add to the portfolio, I will have to start rummaging around in the library trying to find the unused images, rather than being able to go straight to an image folder containing only proofreading portfolio images and nothing else.
  • Plug-in fixes available, perhaps at a cost. If this same blinkered oversight on the part of the WordPress developers is problematic for you, there are some plug-ins out there that enable creating your own Media Library subfolders, although I haven’t yet had time to really investigate them myself. But keep in mind: it may add to the yearly cost of your site. Wouldn’t it have been so much easier if WordPress’s developers had pulled their heads out of their, er, armpits? (Pee-yooh!) Yep, I can see your head nodding too.

Plug-ins and server-level tasks employed on “Hermit Spirit”

At this point, I am going to just list alphabetically the entire collection of plug-ins I’ve found it necessary to use here on my site, to give an idea of the range of functions one might consider. Following that is a list of the server-level tasks employed. Then after that I’ll total up the bill for the plug-ins and server tasks combined, along with the costs for web hosting and any other functions, for a yearly grand total.

Plug-ins used

Here’s the array of plug-ins used on Hermit Spirit to get the features you see on various sections of the site, plus cost info and some additional comments.

On small mobile devices such as phones, the entire chart may not fit within the display width without getting cut off. If that happens, touch-scroll the table horizontally to view the rightmost column. Or, turn your device sideways for best results, which will usually eliminate the need to scroll.
404pageDonationwareEnables an easily user-customizable 404 Error Page.
AkismetFree for blogs, paid subscription for business sitesProtects against comment spam using comprehensive set of filtering rules, adjusted and updated over time based on results across millions of sites.
Archive-Pro-Matic$20.49/year for 1 siteEasily scannable “one-liner” blog archives grouped by category.
BackupBuddy$48.00/year for 2 sites, additional plans for more sitesScheduled or manual WordPress site backups, database-only or full. I have more or less abandoned BackupBuddy for iControlWP, though I still futz around trying to keep BackupBuddy working consistently.
Broken Link CheckerFormerly free. Investigating plug-in’s new status with ManageWP.Plug-in recently transferred to ManageWP as new developer.
Clean My ArchivesFreeChronological, easily scannable “one-liner” archive listings.
Contact Form 7DonationwareSimple contact and registration forms. One of the ad-hoc standards.
Contact Form 7 HoneypotDonationwareEliminates Contact 7 forms submission spam by trapping spambots.
Cookies for CommentsFree by a developer on the Automattic team (owners of WordPress.com)Eliminates blog comment spam by employing a couple of methods not used by other spam-prevention plug-ins here, to help cover the gaps.
Disable EmbedsDonationwarePrevents others from embedding your pages on their sites, or vice versa, unless you whitelist them.
Enable Media ReplaceDonationwareWith this, you can upload updated versions of images that replace the previous ones wherever they’ve been used on your site, not just the master copy in your media library.
Envira Gallery$49.00/year for “Silver”-level plan, which includes all the other add-ons shown just belowComprehensive, feature-filled, responsive, user-friendly image galleries.
Envira Gallery: CSS Add-onUse your own CSS styling for how the galleries are displayed.
Envira Gallery: Gallery Themes Add-onA few additional one-click canned gallery styles.
Envira Gallery: Pagination Add-onAutomatically split galleries into pages, with navigation buttons to go from one page to another.
Envira Gallery: Password Protection Add-onPermit only authorized users to view galleries.
Envira Gallery: Pinterest Add-onAdds Pinterest “Pin It” button to gallery images for easy social sharing.
Envira Gallery: Protection Add-onMakes theft of images more difficult by preventing direct downloading.
Envira Gallery: Slideshow Add-onEnables gallery lightbox slideshows for galleries, with autoplay settings/options.
Envira Gallery: Tags Add-onTag images for better organization and user display options.
Graceful Pull-QuotesDonationwareCustomizable magazine-style pull-quotes without creating duplicate text that can negatively impact search rankings or clutter feeds.
Jetpack by WordPress.comFree. Business model is that the features of WordPress.com are attractive enough, some users might end up upgrading to other, paid services provided.“Kitchen sink” plug-in with multiple modules to enhance or add a range of oft-used but otherwise missing functions to WordPress, such as enhanced comment forms, galleries, math equations, spell-checking, custom content types, extra widget types, infinite scroll, downtime alerts, brute-force attack protection, social sharing, image caching, auto-generated and updated sitemaps, email notifications of posts for site subscribers, etc.
Limit Login AttemptsFree, with over 1 million active installs. Hasn’t been updated in over 4 years, but there is probably little need given its simplicity. There are several other nearly identical plug-ins that do the same thing.Prevent automated, high-speed dictionary attacks on your login page.
Optimize Database after Deleting RevisionsDonationwareKeep your WordPress database pruned of unwanted extra revisions, and prevent pile-up of other clutter. Includes automatic run scheduling if desired.
Postman SMTPDonationwareReplace WordPress’s built-in and sometimes temperamental or nonfunctioning email notification capability with something that actually works consistently.
Registration HoneypotDonationwareStops certain types of registration form spam on your site by creating a simple hidden field that humans can’t fill out but spambots usually will.
Slider Pro$29 one-time fee, additional cost if you need/want ongoing supportElegant and professional sliders. Soliloquy has been taking the market by storm, but SliderPro is a mature plug-in that pays more attention than others to the design and appearance of sliders, and it shows.
Tabby Responsive TabsFree. Development subsidized by upsells to premium Tabby add-ons.Put professionally designed, user-customizable, responsive tabs inside your pages and posts.
Tabby Responsive Tabs Customiser$24.45/year for 1 site (exact cost depends on exchange rate of dollar vs. British pound). I licensed this the first year to make things easier, with so many other things on my plate just getting the website built. Once I can eke out some time, though, I plan to find a way to take the extra CSS that the plug-in outputs and add it to my site’s CSS file, since $24.45 yearly per site is pricey for this limited function.Provides an easy menu interface for adjusting the tab size, font size, spacing, borders, colors and other parameters for your Tabby Tabs.
Tabby Link to Tab$24.45/year for 1 site.Add-on for Tabby Responsive Tabs that enables inserting buttons in the body text of a tab panel to open a different tab on the same page.
Tabby Tab to URL Link$27.85/year for 1 site. Quite pricey for a one-trick pony like this. May need to find a way to do without it if I can figure out an elegant method for redesigning the navigation a bit on the pages its currently used on.Enables clicking on a tab to take user to another web page.
TablePressDonationwareBeautiful, feature-rich tables with no code (other than CSS, if you want).
TablePress Extension: Responsive TablesDonationwareChoose from three different ways to make tables responsive on smaller mobile devices.
WP Edit Pro$17.50 for first year for 2 sites, $10.00/year thereafter. Additional pricing tiers for more sites or for developers.Provides significantly enhanced, customizable version of WordPress’s TinyMCE editor for editing posts and pages with many more features and controls.
Yoast SEOFree, premium upgrade to professional versionMost comprehensive and popular SEO plug-in including on-page content analysis, which is rare.

Server-level tasks

There are a few tasks I have elected to run on the web hosting server rather than handle with plug-ins. I’ve also included my web hosting cost below as the first item.

As with the chart above, if the rightmost column gets cut off on small mobile devices, touch-scroll the table horizontally. Or, turn your device sideways for best results, which will usually eliminate the need to scroll.
ProductCostServer Task / Comments
SiteGround Web Hosting$14.95/month for mid-level plan.Plan allows multiple sites, 20GB drive space, 25,000 visits/month.
iControlWP$15.00/month for use with up to 10 sites.Daily backups via “WorpDrive” function within iControlWP. With iControlWP you can back up, restore, and migrate all your WordPress sites from a single dashboard, plus manage, control, and monitor other important site functions such as security, database optimization, and software updates.

iControlWP is really meant for developers managing numerous sites, for which the pricing is a good deal at this tier. However, I plan to move over to ManageWP soon to economize, which has much more competitive pricing for my modest needs (just 2 sites), with more or less the same features for managing multiple sites including backup.
SG CachePressFree with any SiteGround web hosting plan.Site caching for SiteGround web hosting users. Turns on or off each of SiteGround’s 3 levels of server-side caching of your site, as you see fit.
Sucuri CloudProxy$200/year per domain. Cost applies to subdomains as well, i.e., you cannot piggyback multiple subdomains or cPanel add-on domains under a single master domain. Discount plans for multiple sites may be available (ask).Site security, using Sucuri’s website application firewall. Traffic to your website is routed through CloudProxy first rather than directly to your site. Blocks/filters out hackers, DDoS attacks, password-cracking campaigns, etc. Sucuri is the best in the business, and web hosts may often simply partner with Sucuri for robust security or refer you there instead. Aside from Sucuri, SiteGround is one of the few hosts that writes its own real-time patches to block hack-attacks for plug-ins that have not yet been patched by the plug-in developer.

Yearly self-hosted WordPress site costs

When you add up the above costs — and, for the moment, ignoring freeware/donationware and any one-time licensing fees for plug-ins that carry no yearly subscription fee — the recurring annual total for the above expenses comes to $763.64. (Counting donations, I actually probably paid closer to $850 for this site’s first full year.)

The above number, though, will be reduced by about $150 per year once I switch to using ManageWP’s server-based backup in lieu of iControlWP and BackupBuddy. That will make for a yearly net cost of about $610 (not counting any donations for noncommercial plug-ins), which agrees closely with a well-written overview of how much a self-hosted WordPress site can cost, depending on the features you need. And my total here is for a primarily personal blog site, with a bit of business functionality (though not e-commerce) thrown in. Even a small e-commerce site that used, say, WooCommerce, for example, would obviously be more.

Parting words

And you thought WordPress was free and easy? It certainly is if you get a free WordPress.com account and are willing to live with the numerous restrictions that that implies. But as outlined above, if you expand beyond that to self-hosting, roll your own theme, and add a phalanx of extra functionality with plug-ins, the challenges and costs you face will expand, often considerably. Open-source does not mean free in this case, since WordPress isn’t fully functional on its own when taken beyond a limited set of core needs.

I hope with the above caveats, however, you’ll find the going much easier than I did in the beginning. And, once you get things firing on all cylinders, WordPress is definitely a lot of fun and a marvel of publishing power, despite all the complaints I’ve voiced here. Good luck!

End of 4-part series
Go to: Part 1 | Part 2 | Part 3 | Part 4

Leave a Comment