10 Useful WordPress Plugins

Descrip­tions and whys-hows of plu­g­ins I per­son­al­ly use

Plu­g­ins are to me both the best and the worst of Word­Press. Some plu­g­ins are indis­pens­able becauce they add func­tion­al­i­ty that either is miss­ing “as of yet” or is unlike­ly to be put into core for one rea­son or anoth­er. It’s also a fact that if you have sev­er­al dif­fer­ent plu­g­ins you risk slow­ing the site down through HTTP-requests, and if you’re unlucky there will be back­doors or just slow code. As I said, the best and worst.

Here’s my own list of which plu­g­ins I at this point would not like to be with­out, and why.

Advanced Custom Fields

Cus­tom fields is a great idea, but need­ing to remem­ber what you named the “mood” field or what­ev­er you’re using is a touch annoy­ing. Enter Advanced Cus­tom Fields, which allows you to cre­ate fields with dif­fer­ent datatypes, that show up on dif­fer­ent types of posts, depend­ing on how you set it. If you’re work­ing with sell­ing themes, their Options Page (which unfor­tu­nate­ly is a pre­mi­um add-on) is real­ly, real­ly use­ful.

Better WP Security

Though you should nev­er think that just because you have a plu­g­in installed, your site is secured, I do feel that Bet­ter WP Secu­ri­ty is a good start. Install it in a test envi­ron­ment first, and explore the var­i­ous options to make sure you under­stand why (if not how) it pro­tects, since then you will be bet­ter your­self at hard­en­ing the instal­la­tion. It’s also a good idea to read up on secu­ri­ty over­all, obvi­ous­ly.

Contact Form 7

Obvi­ous­ly you want peo­ple to keep in touch with you (right?), and though I know that Grav­i­ty Forms are prob­a­bly the best if you need more advanced forms, it’s also quite expen­sive. For more stan­dard use, Con­tact Form 7 fits the bill per­fect­ly. There’s even an add-on for ACF to attach to it. I’d also like to rec­om­mend using the Hon­ey­pot plu­g­in rather than any ugly captchas.

Two large tweaks have been made: The style sheet is baked into the site stylesheet, and the con­tact-form-7 script is dereg­is­tered unless it’s on the con­tact page.

wp_deregister_style( 'contact-form-7' ); //These styles are baked into the stylesheet

if ( !is_page('contact')) {
    wp_deregister_script( 'contact-form-7' );

As I only use it on that page, there is lit­tle rea­son to con­cat the con­tact-form-7 scripts into my built script, but if I would use it more, I prob­a­bly would.

Log Deprecated Notices

Most­ly use­ful when devel­op­ing, Log Dep­re­cat­ed Notices by Andrew Nacin does pret­ty much what it says on the label. It also logs if any func­tions are used incor­rect­ly, allow­ing for you to fix things quick­er.

W3 Total Cache

Not exact­ly a sur­pris­ing plu­g­in (it’s tout­ed on the plu­g­in page as being trust­ed by count­less com­pa­nies, includ­ing mattcutts.com), it does the job very nice­ly. Why use a caching plu­g­in? For per­for­mance. By using a caching plu­g­in such as W3 Total Cache you can serve pages and posts as sta­t­ic files rather than dynam­ic, and with the right set­up you can also mini­fy and con­cate­nate scripts and CSS that isn’t already concatenated/minified.

Widget Logic

If the theme is hand­craft­ed to fit a par­tic­u­lar con­tent, you might not need Wid­get Log­ic, since at that point you can set dif­fer­ent wid­get areas in the code itself. How­ev­er, if you for what­ev­er rea­son can’t/don’t want to code the log­ic into the theme itself, Wid­get Log­ic is the next best thing. You do need to under­stand PHP log­ic and code, but that’s part of the fun!

WordPress SEO

Unless you’re a big fan of cod­ing in page titles, I strong­ly rec­om­mend Word­Press SEO. Oh, I know that it’s for SEO, and if that’s what you’re need­ing there’s plen­ty of peo­ple singing its’ praise else­where. Per­son­al­ly I use it to clean up the head some, deal with bread­crumbs and set titles.


One of my “must have” plu­g­ins. I am aller­gic to WYSIWYG, and writ­ing in pure HTML is… tedious. WP-Mark­down is based on the PHP port Mark­down Extra, and includes such love­ly fea­tures such as code high­light­ing using Google Code Pret­ti­fy, and pre­view­ing as you write. The one down­side is that you’ll need to use the short­code to embed YouTube videos and such.

WP-Mark­down is prob­a­bly the one plu­g­in I have tweaked the most, main­ly since it uses a lot of styles and scripts, in a com­bi­na­tion of the Pret­ti­fy and the Edi­tor.


The default theme for Pret­ti­fy is light, and I want­ed to use clos­er to the set­up I have on my per­son­al com­put­er, so dark back­ground and white font, with some pret­ty, rea­son­ably bright colours for touch­ing up. These styles were, obvi­ous­ly, baked into my stylesheet, as seen in the _code.scss file.

The prettify.js file loads in the head, so it is con­cate­nat­ed togeth­er with Mod­ern­izr and Selec­tivzr into the file head.min.js in the build step.


The styles for Mark­down haven’t been changed much from the orig­i­nal code in the plu­g­in, but were copied over to it’s own file under com­po­nents, so that changes could be done.

There where quite a few scripts that I feel should be loaded in the foot­er, so they end­ed up being con­cate­nat­ed into main.min.js which is loaded in the foot­er. One of the biggest advan­tages to hand­craft­ing a theme with spe­cif­ic plu­g­ins in mind.


And here’s the actu­al code to clean up mark­down, to be dropped into your functions.php file, or some­thing sim­i­lar. I am plan­ning on break­ing out that and the above code for Con­tact Form 7 into a file called plugins.php, so that I can deal with plu­g­ins as I add or remove them.

function mh_remove_markdown()
    if ( !is_admin()) {

add_action('wp_enqueue_scripts', 'mh_remove_markdown', 15);


Not much real­ly need­ed to say about this one. It pro­vides fanci­er pag­i­na­tion, and the CSS is default, but baked into the site CSS.


Through var­i­ous means and ways, I even­tu­al­ly land­ed on wp-Typog­ra­phy as a plu­g­in that I’d like to use. How­ev­er, as can be clear­ly seen, it hasn’t been updat­ed for two years. I have updat­ed it some (main­ly to remove dep­re­cat­ed calls), and the ver­sion I use can be found on Github

For the moment comments are not enabled, but feel free to reach out on Twitter.