A WordPress comment form can disappear completely, appear only on some posts, or remain visible while refusing to submit. The cause is usually a setting, template condition, plugin conflict, cached page, JavaScript error, or comment-protection rule—not the comment box itself.
In this guide
Start by identifying which behavior you have: the form is missing, the submit button does nothing, the page reloads without saving the comment, or WordPress displays an error. Then work through the checks below in order. Make a backup before changing theme files or disabling security tools.
1. Confirm comments are enabled for the post
WordPress can allow comments globally while disabling them on an individual post or page. Open the affected content in the editor and look for the Discussion panel. Make sure Allow comments is enabled.
If the Discussion panel is hidden, open the editor preferences or screen options and enable it. The exact label and location can vary between the block editor, classic editor, and WordPress versions.
For a site-wide setting, go to Settings → Discussion and check whether Allow people to post comments on new articles is enabled. This setting affects new content; it does not necessarily reopen comments that were already disabled.
Check whether comments are closed automatically
In Settings → Discussion, look for the option that closes comments after a specified number of days. A post older than that limit may show existing comments without displaying a new-comment form.
Also check the post’s publication status, post type, and privacy. Some themes intentionally omit comments from private content, pages, landing pages, or custom post types.
2. Check the comments screen for a closed or blocked status
Go to Comments in the WordPress dashboard. If comments are being held for moderation, marked as spam, or rejected, the form may still be working even though visitors do not see their submission immediately.
Review Settings → Discussion for moderation rules such as requiring an approved author, containing links, or matching a moderation keyword. These rules normally affect the comment after submission, but an anti-spam plugin may block the request before WordPress creates a comment.
Ask a logged-out visitor to test the form in a private browser window. Administrators may see different behavior because they are authenticated and can bypass some caching or protection rules.
3. Determine whether the theme is loading the comment template
A WordPress theme must call the comment template for a form to appear. In a classic theme, the relevant template is commonly comments.php, while block themes may provide a Comments block through the Site Editor.
If the form vanished after a theme change, update, or custom template edit, compare the affected content with a standard post template. A custom page template may intentionally omit comments or fail to call the required template.
Do not paste random code into functions.php as a first fix. A syntax mistake can create a fatal error, and the correct repair depends on whether the site uses a classic theme, block theme, child theme, or custom post type.
For technical reference, consult the official WordPress Developer Resources before changing theme code.
Look for a theme-specific comment setting
Some themes include a Customizer or theme-options control for showing comments on posts, pages, or selected post types. Search under Appearance → Customize, Appearance → Editor, or the theme’s own settings screen.

If comments appear when you temporarily switch to a default WordPress theme, the theme or its template is the likely cause. Test this on a staging site when possible, because changing themes can alter menus, widgets, and page layouts.
4. Test for a plugin conflict
Comment forms are frequently affected by caching, security, anti-spam, membership, form, optimization, and page-builder plugins. A plugin may remove the form, replace it with a custom form, block the request, or interfere with the JavaScript used to submit it.
- Clear any available site and browser cache.
- Temporarily deactivate plugins that modify comments, spam protection, caching, JavaScript, login access, or page content.
- Test the affected post in a private browser window.
- Reactivate plugins one at a time until the problem returns.
Do not deactivate security plugins on a busy production site without a plan. If the problem disappears after a plugin test, check that plugin’s settings and update status before deciding whether to replace it.
If the dashboard is difficult to use, a conflict-detection tool or a staging copy can reduce the risk of disrupting visitors. Related JavaScript symptoms are covered in WordPress JavaScript Errors: How to Find the Plugin or Theme Causing Them if that article is available on your site.
5. Inspect the browser console when Submit does nothing
If clicking Post Comment produces no visible result, the browser may be stopping the request because of a JavaScript error. Open the page, right-click, choose Inspect, and select the Console tab. Reload the page and test the form again.
Errors mentioning a script, a blocked resource, reCAPTCHA, jQuery, or a security policy provide useful clues. Also check the browser’s Network tab: a failed request, redirect, 403 response, or timeout can identify whether the problem is JavaScript, hosting, or a firewall.
Common causes include:
- JavaScript files combined or deferred incorrectly by an optimization plugin.
- A theme or plugin loading an incompatible script.
- reCAPTCHA or another anti-spam service failing to load.
- A content security policy or firewall blocking a required request.
- Mixed HTTP and HTTPS resources after a site migration.
Disable one optimization feature at a time—such as script combination, delay, or defer—rather than turning off every performance setting permanently.
6. Check caching and logged-in versus logged-out behavior
A cached version of a post can display an outdated comment state. For example, the page may have been cached while comments were disabled, or a cache may serve a form containing an expired security token.
- Purge the page cache in your WordPress caching plugin.
- Purge the host, CDN, and reverse-proxy cache if those are in use.
- Exclude comment-related requests and pages from aggressive caching when the plugin provides that option.
- Test while logged out and in a private browser window.
If the form works for administrators but not visitors, compare the HTML source and network requests for both sessions. A logged-in-only difference may indicate a cache variation, membership rule, firewall rule, or plugin condition. See How to Troubleshoot a WordPress Site That Only Breaks for Logged-In Users for a broader diagnostic process.
7. Review spam protection and security rules
Anti-spam systems can reject comments silently when their API key is invalid, a visitor fails a challenge, or the request resembles automated activity. Check the anti-spam plugin’s logs and settings rather than assuming the theme is broken.
Look for browser messages about a failed challenge, blocked domain, or invalid token. Confirm that the site URL, API credentials, and HTTPS configuration match the service’s requirements. If a web application firewall is blocking the request, its event log may show the rule and request path.

Never solve a blocked comment form by removing all protection indefinitely. Instead, test with a temporary, narrowly scoped exception and restore protection immediately after testing.
8. Check for server, PHP, and database errors
If the form submits but the page shows a 500 error, critical error, or blank response, inspect the hosting error log and WordPress debug log. Enable debugging only temporarily and avoid displaying errors to visitors on a live site.
In wp-config.php, a controlled logging configuration may look like this:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
After reproducing the issue, review wp-content/debug.log and then turn debugging off if it is no longer needed. Look for the plugin, theme file, or database error reported at the time of submission.
If other forms or AJAX features are failing too, the issue may involve hosting limits, a firewall, PHP compatibility, or a broader site failure. A related critical error troubleshooting guide can help separate a comment-specific problem from a site-wide fatal error.
9. Check the comment form markup and required fields
Inspect the form fields and confirm that required fields have usable labels and names. A custom comment form may omit WordPress’s expected fields, use duplicate IDs, or include a hidden required field that visitors cannot complete.
Test with a simple name, email address, and short comment. Do not use an email address you do not control for repeated tests. If the form rejects valid input, read the exact validation message and check whether a plugin has customized the minimum comment length, permitted HTML, or required login status.
Accessibility and privacy settings can also affect the experience. Make sure error messages are visible, fields are not hidden behind overlays, and the form remains usable on mobile devices.
10. Restore the form safely after finding the cause
Once you identify the cause, reverse only the change that created the problem. Update or reconfigure the conflicting plugin, repair the theme template through a child theme, remove the faulty optimization exclusion, or correct the anti-spam credentials.
Then clear every relevant cache and test:
- A post with existing comments.
- A post with no comments.
- A logged-out visitor session.
- A mobile browser.
- A valid comment and an intentionally invalid submission.
- A comment that should be held for moderation.
Confirm the comment appears in the dashboard with the expected status and that notification emails behave as intended. If the form remains broken after conflict testing, a professional WordPress Site Repair review can trace theme, plugin, server, and security interactions without relying on guesswork. For recurring updates, monitoring, and security maintenance, see the WP Fix It Care and Site Manager options.
Quick diagnosis checklist
- Form missing everywhere: check Discussion settings, theme templates, and comment-related plugins.
- Form missing on one post: check that post’s Discussion settings, age limit, post type, and template.
- Submit button does nothing: inspect JavaScript errors, reCAPTCHA, and optimization settings.
- Submission reloads without saving: check moderation, spam protection, cookies, and failed network requests.
- Visitors cannot submit but administrators can: purge caches and compare firewall or logged-out rules.
- Submission causes a 500 or critical error: review server and WordPress debug logs.
When to get help
Stop making changes and ask your host or WordPress professional for assistance if the problem affects other forms, produces database errors, exposes debugging information, or began after an unexplained security event. Preserve the error message, affected URL, browser details, recent changes, and relevant logs. That information makes the diagnosis faster and reduces the temptation to disable important security controls.



