{"id":90077,"date":"2026-02-21T10:18:00","date_gmt":"2026-02-21T09:18:00","guid":{"rendered":"https:\/\/blaminhor.com\/p\/m\/news\/?p=90077"},"modified":"2026-02-17T11:28:46","modified_gmt":"2026-02-17T10:28:46","slug":"how-to-completely-disable-comments-on-your-wordpress-site","status":"publish","type":"post","link":"https:\/\/blaminhor.com\/p\/m\/news\/how-to-completely-disable-comments-on-your-wordpress-site\/","title":{"rendered":"How to Completely Disable Comments on Your WordPress Site"},"content":{"rendered":"\n<p>WordPress ships with comments enabled by default. On every page, every post, every custom post type. For blogs that thrive on reader interaction, that makes sense. But for business sites, portfolios, landing pages, and most modern WordPress projects, comments are just noise \u2014 and a security surface you don&rsquo;t need.<\/p>\n\n\n\n<p>Spam bots love comment forms. Even with Akismet or reCAPTCHA, you&rsquo;ll still spend time moderating, cleaning up, and wondering why your database keeps growing. The simplest fix? Remove comments entirely.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why WordPress Comments Are Still a Problem in 2026<\/h2>\n\n\n\n<p>Comment spam hasn&rsquo;t slowed down. Bots submit thousands of junk comments daily across WordPress sites. Even if they get caught by filters, they still end up in your database, bloating your <code>wp_comments<\/code> and <code>wp_commentmeta<\/code> tables.<\/p>\n\n\n\n<p>But spam isn&rsquo;t the only issue:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Performance:<\/strong> Comment queries add overhead to every page load, even when no comments exist.<\/li>\n\n\n\n<li><strong>Security:<\/strong> Comment forms are an attack vector for XSS and SQL injection attempts.<\/li>\n\n\n\n<li><strong>Clutter:<\/strong> The admin dashboard shows comment counts, menus, metaboxes, and widgets you never use.<\/li>\n\n\n\n<li><strong>Pingbacks:<\/strong> The <code>X-Pingback<\/code> header and XML-RPC endpoint expose your site to DDoS amplification attacks.<\/li>\n<\/ul>\n\n\n\n<p>Unchecking \u00ab\u00a0Allow comments\u00a0\u00bb in Settings &gt; Discussion doesn&rsquo;t solve most of these. It only affects new posts. Existing posts keep their comment status open. The admin menu stays. The database tables remain. Pingbacks keep working.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Nuclear Option: Remove Everything<\/h2>\n\n\n\n<p>What you actually want is a complete removal. Not just closing comments on future posts, but:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Close comments and pingbacks on <strong>all existing posts<\/strong> in the database.<\/li>\n\n\n\n<li>Remove comment support from <strong>every post type<\/strong> (posts, pages, custom types).<\/li>\n\n\n\n<li>Hide the Comments menu, dashboard widget, and comment columns from the admin.<\/li>\n\n\n\n<li>Remove the comment feed links from your HTML head.<\/li>\n\n\n\n<li>Strip the <code>X-Pingback<\/code> header from HTTP responses.<\/li>\n\n\n\n<li>Unregister the Recent Comments widget.<\/li>\n\n\n\n<li>Optionally, <strong>delete all existing comments<\/strong> from the database.<\/li>\n<\/ol>\n\n\n\n<p>Doing this manually means editing functions.php, adding filters, removing actions, writing SQL queries, and hoping you didn&rsquo;t miss anything. Or you install a dedicated plugin \u2014 which often comes with its own overhead and settings bloat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Do It with Blaminhor Essentials<\/h2>\n\n\n\n<p><a href=\"https:\/\/wp.blaminhor.com\">Blaminhor Essentials<\/a> includes a <strong>Disable Comments<\/strong> module that handles all of the above in one click. Here&rsquo;s how to set it up:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Activate the Module<\/h3>\n\n\n\n<p>Go to <strong>Blaminhor Essentials &gt; Modules<\/strong> and enable \u00ab\u00a0Disable Comments\u00a0\u00bb. That&rsquo;s it \u2014 comments are now disabled site-wide. The module hooks into WordPress at every level:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>comments_open<\/code> and <code>pings_open<\/code> filters return false.<\/li>\n\n\n\n<li>Comment support is removed from all post types.<\/li>\n\n\n\n<li>The comment feed link is stripped from the HTML head.<\/li>\n\n\n\n<li>The <code>X-Pingback<\/code> header is removed from responses.<\/li>\n\n\n\n<li>The Recent Comments widget is unregistered.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Clean Up the Admin<\/h3>\n\n\n\n<p>With the <strong>\u00ab\u00a0Hide from Admin\u00a0\u00bb<\/strong> option (enabled by default), the module also removes every trace of comments from your WordPress dashboard:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Comments menu disappears from the sidebar.<\/li>\n\n\n\n<li>Comment columns are removed from post and page lists.<\/li>\n\n\n\n<li>The comment metabox is removed from the post editor.<\/li>\n\n\n\n<li>The Recent Comments dashboard widget is gone.<\/li>\n\n\n\n<li>Navigating to <code>edit-comments.php<\/code> redirects to the dashboard.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Close Existing Comments<\/h3>\n\n\n\n<p>Disabling comments only affects future behavior. If you have old posts with <code>comment_status = 'open'<\/code>, they technically still accept comments at the database level (even though the module blocks them in practice).<\/p>\n\n\n\n<p>Click <strong>\u00ab\u00a0Close Existing Comments\u00a0\u00bb<\/strong> to run a single SQL update that sets <code>comment_status<\/code> and <code>ping_status<\/code> to <code>'closed'<\/code> on every post in your database. The module shows you exactly how many posts were affected.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4 (Optional): Delete All Comments<\/h3>\n\n\n\n<p>If you want a completely clean slate, the <strong>\u00ab\u00a0Delete All Comments\u00a0\u00bb<\/strong> button permanently removes every comment and its metadata from the database. This cleans up <code>wp_comments<\/code>, <code>wp_commentmeta<\/code>, and resets <code>comment_count<\/code> on all posts to zero.<\/p>\n\n\n\n<p>This action is irreversible, so the module asks for confirmation before proceeding. Make a backup first if you&rsquo;re unsure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What About Re-enabling Comments Later?<\/h2>\n\n\n\n<p>Everything is reversible (except deleting comments, obviously). Deactivate the module, and WordPress goes back to its default behavior. Comments reopen, menus reappear, widgets come back. No residual code, no leftover settings polluting your database.<\/p>\n\n\n\n<p>If you only closed existing comments, those stay closed \u2014 but you can reopen them from WordPress&rsquo;s bulk edit screen if needed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lighter, Cleaner, Safer<\/h2>\n\n\n\n<p>Disabling comments isn&rsquo;t just about aesthetics. It reduces your attack surface, shrinks your database, speeds up queries, and removes an entire category of admin work. For sites that don&rsquo;t need reader interaction, there&rsquo;s no reason to keep comments around.<\/p>\n\n\n\n<p>The Disable Comments module in <a href=\"https:\/\/wordpress.org\/plugins\/blaminhor-essentials\/\">Blaminhor Essentials<\/a> does it all with two checkboxes and two buttons. No code, no config files, no bloat.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress ships with comments enabled by default. For sites that don&rsquo;t need them, here&rsquo;s how to completely remove comments, pingbacks, and all related clutter from your WordPress site.<\/p>\n","protected":false},"author":1,"featured_media":90079,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[],"class_list":["post-90077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/comments?post=90077"}],"version-history":[{"count":1,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90077\/revisions"}],"predecessor-version":[{"id":90078,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90077\/revisions\/90078"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/media\/90079"}],"wp:attachment":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/media?parent=90077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/categories?post=90077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/tags?post=90077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}