How to disable comments in WordPress, completely

Settings → Discussion only stops new comments. How to disable comments in WordPress completely — existing posts, leftover UI, bots, and a deletion trap.

Search “disable comments wordpress” and most answers stop at one screen: Settings → Discussion, uncheck a box, done. That screen is real and it is a start, but it only ever changes what happens to posts you haven’t published yet. Every post and page you already have keeps its comments open, exactly as before, because that setting governs new content only. Getting this right takes a few more steps than most guides mention — and one wrong step can quietly destroy money.

Settings → Discussion: what it actually changes

Open Settings → Discussion and the top of the page has a checkbox: “Allow people to submit comments on new posts.” Turn it off and every post you publish from now on is born with comments closed. It changes a default, nothing more. Nothing already on your site is touched.

Two boxes lower down on the same screen look like they might help and don’t. “Allow link notifications from other blogs (pingbacks and trackbacks)” controls a different field entirely — ping_status, not comment_status — and it has the same new-content-only limit. “Automatically close comments on posts older than __ days” gets closer, but it closes comments by age, not by choice, so anything younger than your cutoff stays open regardless of whether you wanted it commentable.

This is the opposite problem from changing a WordPress slug, where core quietly does more than people expect and redirects the old URL for you. Here core does less than the settings page implies. Turning the default off is step one, not the whole job.

Close comments on what you already have

For existing content, the tool is bulk edit, and it has to be run once per post type. Go to Posts, select every post (or filter to the ones you want), open the Bulk actions dropdown, choose Edit, and apply. In the panel that opens, the Comments dropdown has three states — leave as-is, allow, do not allow. Set it to Do not allow and click Update.

Closing comments this way stops new submissions — the comment form disappears from the post. It doesn’t touch the comments already there. Anything already approved keeps showing on the page exactly as before; closing changes intake, not display.

Pages are a separate post type with their own list screen, so this has to be repeated at Pages, even though the panel looks identical. If you run a store, custom post types matter here too — WordPress’s wp_comments table isn’t reserved for blog comments. Plugins reuse the same table for pingbacks, trackbacks, and, on a WooCommerce site, for order notes (more on that below). Bulk-closing a post type only touches the comment_status field on posts of that type; it has no effect on rows attached to something else.

What’s still there after every thread is closed

Closing comments stops new submissions. It does not remove the leftover admin UI built around commenting, and an honest checklist has to include it:

None of this is dangerous, but a site that’s “disabled comments” and still shows a Recent Comments list in the footer looks unfinished, because it is.

The part most guides skip: bots don’t use the form

A common shortcut is hiding the comment form — a theme edit, a CSS rule, removing the comment_form() call from a template. It looks finished. It changes nothing that matters to a bot.

Comment submission on WordPress goes to one endpoint, wp-comments-post.php, and a script that wants to post spam sends a POST request straight to that URL. It never loads your page, never sees your template, never notices that the form is hidden. What it does hit is the same server-side check WordPress runs for every submission: wp-comments-post.php looks up the post’s comment_status and rejects the request if comments are closed. This is exactly why the bulk-edit method above matters more than any front-end hiding trick — a post with comment_status actually set to closed rejects a direct bot POST on its own, at the database level, with no form involved. A post that only looks closed because the form was hidden in a template still has comment_status set to open, and still accepts it.

Never delete comments on a store

Here’s the mistake that matters more than any of the above. Once comments are closed everywhere, it’s tempting to reach for a “clean up all comments” tool and empty the table for good. On a WooCommerce site, don’t.

We caught this ourselves, on a site we worked on. Its front end showed three comments. A cleanup tool inspecting the actual wp_comments table offered to delete 122 rows. The gap between “3” and “122” was WooCommerce: 118 of those rows were order notes — payment confirmations, refund records, “shipped” notes a support agent had typed into an order — stored as comments because WooCommerce uses the same table for everything else, distinguished only by a comment_type of order_note. One more row was a webhook delivery log written the same way. The remaining three matched what the front end actually showed — and one of those three was itself a genuine product review, not a blog comment, filed under a different comment_type again.

Deleting “all comments” on that site wouldn’t have touched three blog comments. It would have erased the order history for every customer who’d ever bought something.

The fix is the one this guide has already made: close, never delete. Setting comment_status to closed on a post touches nothing but that post’s own new-comment behavior — every existing row stays exactly where it is, recoverable the moment you change your mind. Deleting rows from wp_comments doesn’t know the difference between an old spam comment and an order note, because at the database level there isn’t one. We’ve written before about why we will never put ads in your dashboard — the same respect for what’s already on your site applies here, and this is the sharpest version of that rule we’ve seen in practice.

Disable Comments in WP Pro Admin

Disable Comments in WP Pro Admin does the complete version of this in one toggle, live now — no waiting on a future release. Turning it on closes comments across existing content, not just new posts, so there’s no separate bulk-edit pass to remember. It also goes a step further than closing alone: where the manual method above leaves already-approved comments showing on the page, this hides those too, without writing a single change to the database. It rejects direct POST requests to wp-comments-post.php the same way a correctly-closed post does, so the bot gap above is covered without any form-hiding involved. And it follows the rule from the story above to the letter: comments are hidden, never deleted. Turn the feature off and every comment — and every WooCommerce order note sitting in the same table — is exactly where it was, visible again immediately.

WP Pro Admin is a free download, GPL, with no ads, no upgrade nags, and no dashboard notices — a promise enforced by an automated test in the build, not a line on a marketing page.