Recommendations for improving WordPress comments

wp-comments-need-workThere are a number of things that concern me in regard to WordPress comments. They are one of those features that I have a love hate relationship with.

Comments are great for active, well moderated communities. I genuinely enjoy receiving comments from Post Status readers, where people often add value to the conversation.

For many websites, comments can be a sad and inactive wasteland or a trollfest. For most business and corporate websites I've worked on, comments are not wanted at all.

There seems to be a sweet spot of niche and medium-sized websites where comments tend to be most valuable.

But WordPress is fairly aggressively pro-comments by default.

Considering these things, I think we should take a look at default WordPress comment behavior and talk about how we may be able to improve the overall experience.

Comments should be off on pages by default

What percentage of WordPress pages do people really want comments on? I can think of very few scenarios where that's the desired behavior.

I think they are almost universally a posts-only feature, especially in the era of WordPress-the-CMS.

I believe comments on pages should be off by default with WordPress. I think they should be off for registered custom post types by default as well.

I realize removing support for comments on pages and CPTs is probably out of the question, but we could at least make them un-checked or toggled off. If you want to do so yourself, you can use this simple but excellent filter for turning off comments for pages in your theme or functionality plugin:

Note that this also turns off pings, which I also always do for pages.

“Website” should be easier to remove from comment forms

Currently, it requires the following filter to remove the website / URL field from the WordPress comment form:

But URLs really only make sense for a fairly high-tech audience. Average people rarely have websites. There are already 17 settings on the Discussion settings page in WordPress, and I think disabling the website field should also be there.

URL fields are also a haven for spam comments. Chris Coyier had the great idea to filter comments before approval based on URL length, since so many spammy URLs are long. Andrew Norcross made it so, and the resulting tiny snippet is a nice one to keep in your pocket.

Avatar settings

Now, in the spirit of decisions over options, I'll vote we also remove the default avatar setting, so as to keep the balance of the number of options for WordPress discussion. I mean, do we really need to be able to choose to show monsters if people don't have Avatars?


By the way, if we're going to have Avatar settings, we should go ahead and make local avatars a core option instead of requiring a plugin.

Global changes to existing comment settings should be possible in Discussion settings

The Discussion settings also have some checkboxes you can click to allow people to post comments on new articles:


The problem is, changing comment status in bulk after the fact is a pain in the butt.

You can do it a hundred or so at a time with the bulk post editor, or via direct MySQL query, but the former is cumbersome and the latter is dangerous for beginners. Nevertheless, here's how you'd do it with MySQL:

But please be careful when editing your database directly. Only do so if you know what you're doing. This is one of very few decent times to use MySQL queries directly.

I don't know the right answer on this one. I'd love some more powerful bulk comment editing options. I'm just not sure whether it's core-territory, or which location in WordPress would be the right place to host these options. There is a ticket for 3.9 with a patch for a global comment status setting; I'm just not sure if it's blessed for 3.9 or not.

“There's computer code on the bottom of the page”

The WordPress comment form is confusing, but if you've been around WordPress or websites with comments long enough, you probably don't realize it.

The headline for this section is an actual quote I got from a client. Comments were open on a page for a dev site I set up for them, and they emailed me asking me to remove the “computer code on the bottom of the page.” I had no clue what they were talking about, until I went to the page and realized it was this:


Yep, the default WordPress output for allowed HTML tags and attributes made no sense at all to them. And why should it? Should the average commenter really understand how to recognize HTML? Probably not.

Yet this is standard output for the comment_notes_after parameter of the comment_form function in WordPress.

I think we'd be better off not showing that at all. Those with a technical enough audience to understand could enable it as a parameter of the comment_form function in their theme.

Of course, Automattic already knows this. For / Jetpack commenting, only the comment field is visible by default, and the allowed attributes mess doesn't appear anywhere. Core should follow suit.

We should have better ways to teach about spam

Spam is annoying. Akismet is pretty good at killing spam, but it requires a account, and people get confused. It's also not super clear when signing up for Akismet that there's a free option.

So, what we have here, is a brand new website owner trying to activate Akismet to prevent spam, hitting a perceived paywall, then (if they don't follow through with Akismet) either giving up or opting into a third party commenting system.

I'm not saying third-party commenting systems are evil, but I wish native WordPress comments could handle spam a bit better than they do. Again, I don't know the answer here, but I would love to see some brainstorming around the topic. And I think packaging functionality like the Cookies for Comments plugin into core is a decent place to start the conversation.

Just scratching the surface

This post just scratches the surface of the bigger conversation I'd like to have about WordPress comments.

I haven't even touched more involved editing of the WordPress comment screen. In a recent case of attempting fairly “simple” edits to the comment form output, I found doing so surprisingly nonintuitive. I'm just thinking out loud here, but I wish custom comment forms were as easy as choosing template tags in the WordPress loop.

And I could write two thousand words talking about the various third party commenting options and their pros and cons: Jetpack comments, Disqus, Livefyre, Facebook comments, and more. But I'll save that for another day.

In the meantime, if anyone is curious, I use a slightly customized version of the Discussion plugin, built by the fine folks at Interconnect/it, to handle the Ajax loading and overall comment experience on Post Status.

Get involved

Some of the items I've brought up here are not new debates. And some also have tickets associated with the topics. You can browse all core WordPress trac tickets with the handy comment component search if you'd like to get involved with the future of WordPress commenting.

Speaking of discussion, I don't often ask, but I'd love to know what other folks think about my ideas and the commenting experience of WordPress in general.