By

10 Things I Hate About WordPress (And How to Fix Them)

10 Things I Hate About WordPress
I love WordPress, but I don’t love everything about it.

I think it’s the best way to build a website for most people, but like any piece of software, it’s not perfect. There are a few things that really chap my hide, and I’d like to air my grievances here.

To be clear, this post is not about complaining, it’s about providing solutions to some common problems. One cool thing about WordPress is that if you don’t like something, you can always contribute your idea for a fix because it’s open source.

Some of these fixes are specific to the way I like to use WordPress, so they might not be a good idea for the core software. So without further adieu [french accent], here we go!

1. I hate: <p> tags around everything

WordPress has something called “wpautop”, which automatically puts paragraph tags around everything in the page/post editor. 90% of the time this is great, but sometimes it’s just annoying.

For example, it puts paragraph tags around image and script tags. This has strange affects on page layouts, and breaks scripts.

Solution: use the Raw HTML plugin

Sure, you can zap wpautop altogether by adding this code to your functions.php:

1
remove_filter( 'the_content', 'wpautop' );

But I prefer to use the Raw HTML plugin because it allows you to turn off wpautop (along with other filters) on a page/post basis. Get this plugin on the repo here: http://wordpress.org/extend/plugins/raw-html/

2. I hate: Switching between the HTML and Visual editor modes

So you coded your own beautiful page layouts on your latest project, with perfectly formatted, semantic HTML. You turn the site over to a happy client, and collect your paycheck. Life is good!

A few days later the client needs to edit one of their pages, so they go to the page edit screen, click over to visual mode, and change a couple of things around. They press update, and kaboom! Your beautiful page is destroyed!

The TinyMCE editor automatically filters your code when switching between ‘Visual’ and ‘Text’ mode, stripping tags and generally causing ruckus.

Solution: Hack it, or use a plugin

The simplest solution is to only use tags that the TinyMCE editor will not strip out. However, valid tags like <iframe> are not always avoidable.

You can hack around and try to do this yourself, or use a plugin like Raw HTML Pro.

A combination of all 3 of these techniques might be the best idea.

3. I hate: Cluttered Code

The result of any software that writes code for you is that it’s not as pretty as it could be.

WordPress does a WAY better job than some other solutions, but it can get a little ugly sometimes. It’s certainly not as clean as if you wrote it yourself.

Solution: Clean it up!

A lot of this depends on your theme and the content you are adding with the page/post editor. Here’s a couple of things you can do:

1. Check your theme for extra junk in the head. Here’s some sample code you can add to your child theme functions.php file:

1
2
3
4
5
6
7
8
9
10
// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Source: digwp.com.

2. Don’t use the visual editor

The visual editor can produce weird stuff sometimes, and because of filters like wpautop, the code can look pretty bad. If possible, write your own HTML.

4. I hate: The learning curve

WordPress has a bit of a learning curve for newbies.

It’s not a super steep curve, but it’s not as intuitive as an Apple product. This is one of the things that has opened the door for “competitors” such as Tumblr, which are much easier to use on first glance (but not as extensible).

Solution: Simplify the admin

One way to simplify the admin area is to remove some menu items. This is obviously something you’d have to tailor to your particular situation or client, but here’s some example code to remove some menus (add this to your child theme functions.php file):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// ----------------------------------
// --  REMOVE LEFT NAV MENU ITEMS  --
// ----------------------------------
 
function pc_remove_links_menu() {
 
     global $menu;
 
     remove_menu_page('upload.php'); // Media
     remove_menu_page('link-manager.php'); // Links
     remove_menu_page('edit-comments.php'); // Comments
     remove_menu_page('plugins.php'); // Plugins
     remove_menu_page('options-general.php'); // Settings
     remove_menu_page('tools.php'); // Tools
}
 
add_action( 'admin_menu', 'pc_remove_links_menu' );
 
// ----------------------------
// --  REMOVE NAV SUB MENUS  --
// ----------------------------
 
function pc_remove_submenus() {
 
  global $submenu;
 
  unset($submenu['index.php'][10]); // Removes 'Updates'.
  unset($submenu['themes.php'][5]); // Removes 'Themes'.
  unset($submenu['options-general.php'][15]); // Removes 'Writing'.
  unset($submenu['options-general.php'][25]); // Removes 'Discussion'.
  unset($submenu['edit.php'][16]); // Removes 'Tags'.
  unset($submenu['edit.php'][15]); // Remove 'Categories'.
  unset($submenu['tools.php'][5]); // Removes 'Available Tools'.
  unset($submenu['tools.php'][10]); // Removes 'Import'.
  unset($submenu['tools.php'][15]); // Removes 'Export'.
  unset($submenu['tools.php'][25]); // Removes 'Delete Site'.
  unset($submenu['users.php'][10]); // Removes 'Add new user'.
  unset($submenu['users.php'][5]); // Removes 'All Users'.
}
 
add_action( 'admin_menu', 'pc_remove_submenus' );

For a list of all menus, see this post.

I’m not a User Interface expert, so I’m not going to attempt to comment on how this should happen in the core. The dev team has made great strides to simplify things with each major new release, and I know this is an issue that is very important to Matt Mullenweg. I’m looking forward to seeing more great features like the distraction free post editor.

5. I hate: Going to 4 different places to edit one page

If you are an experienced WordPresser like me, it’s easy to forget what using WordPress for the first time was like. I came from a background of making websites in static HTML, where you could edit an entire page by going to that page and editing it. Imagine that!

WordPress uses widgets, template files, plugins, custom menus, and all kinds of other cool stuff that makes it awesome. Widgets are awesome, but the trade-off is that you can no longer go to a page and edit it. You go to the page editor to edit the page content, then you go the Widgets to edit the sidebar/header/footer, then go to the menus page to edit the navigation, then possibly go somewhere else if you have a complex setup.

Solution: ??

There isn’t really a solution for this one (that I know of), it’s more of a necessary evil. In the long run it’s much better to have your menus and widgets separate, even if it means not being able to edit everything in one place.

6. I hate: Switching Themes

Switching between themes often results in lost widgets, menus, theme settings, and layouts.

Widget saving was drastically improved in version 2.8 (I think?), which makes switching back to an old theme much easier. However, many themes have complex homepage layouts, custom templates, and other functionality that is not compatible between themes. This makes switching themes a process that can include rebuilding pages and layouts.

Solution: Use more plugins

This one hasn’t completely been solved yet, since much depends on the themes. Many developers are pushing for all features to be plugin based so that switching themes is easier. Without rehashing this debate, there are still good arguments to put theme-specific features into themes.

If you really need to be able to switch themes easily, one solution is to use plugins whenever possible.

7. I hate: Its reputation as a blogging platform

WordPress got its start as a blogging platform, and the myth that it’s only for blogging is still very much alive.

I encounter people who ask me “Isn’t WordPress just for blogging?” all the time. This is unfortunate, since WordPress has been a fully featured “CMS” or website system for years.

Solution: Education

All you can really do is spread the word that WordPress is the best publishing platform on the web. There’s almost nothing it can’t do well, and it’s used by everyone from Fortune 500 companies, to celebrities, to small businesses.

Stats are fun:

  • 16.7% of the top 1 million websites use WordPress.
  • 48% of the top 100 blogs in the world are powered by WordPress.
  • WordPress is used by 72.4 million websites
  • WordPress 3.4 has been downloaded 27.5 million times

All stats are from early 2012, except the last one

8. I hate: Spam

Ever received a comment like this?

“wozbsqsfttdpefst, Online Casino. New online casino, syaQwkC.”

“would have been better if i had found your website before, because i need to know about this subject, but it’s always good to learn something new. lista de emails

Spam isn’t specific to WordPress, but WP sites certainly get hit hard. Any site with public comments or online forms will get spam, and lots of it. Fortunately there is an easy solution…

Solution: Akismet

Akismet is an anti-spam plugin that ships with every version of WordPress. Just go to Appearance => Plugins in your admin area and activate it. Follow the steps to get a free API key and submit it. That should kill about 99.9% of your spam.

9. I hate: Explaining WordPress.com vs. WordPress.org

WordPress.com is a for-profit web hosting service which uses the free WordPress software, and WordPress.org is where the free software and open-source project are hosted. Sound confusing? It is.

I’m sure it seemed like a good idea at the time to use these two sister domains, but it has caused more confusion than anything else surround WordPress. People buy our themes and can’t use them on WordPress.com, and we have to explain the difference. Just look at the @WordPress twitter feed and you’ll see tons of tweets like this:

Solution: Education

At this point it’s probably too late to change either of the domain names, so this problem will persist for a long time to come. The only thing we can do is be really clear with customers and clients about the difference, and educate people about WordPress.

10. Your turn: What do you hate about WordPress, and how do you fix it?

I intentionally left this one for you, dear reader, because I’m sure I missed something. Let me know what bugs you, and what you do about it in the comments.

After you comment, make sure to help make WordPress better by contributing to WordPress ideas, or to trac.

Scott Bolinger

Front-end designer, CSS conjurer, WordPress lover. One out of two Press Coders.