{"id":301894,"date":"2026-05-22T20:36:42","date_gmt":"2026-05-22T20:36:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-seo-noindex-toggle\/"},"modified":"2026-05-22T21:49:18","modified_gmt":"2026-05-22T21:49:18","slug":"simple-seo-noindex-toggle","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/simple-seo-noindex-toggle\/","author":21012492,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Simple SEO Noindex Toggle","header_author":"Saidul","header_description":"A lightweight, professional SEO plugin to add noindex meta tags to individual posts and pages \u2014 with a clean admin UI, tag verifier, admin-bar indicator, list-table column, bulk actions, and quick-edit support.","assets_banners_color":"c6c9cd","last_updated":"2026-05-22 21:49:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/sibokul\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"sibokul","date":"2026-05-22 21:49:18"}},"upgrade_notice":{"1.0.0":"<p>Initial release. No upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3544427,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3544427,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"<strong>SEO Settings meta box<\/strong> \u2014 editor sidebar with toggle switch, live status badge, tag preview, and Tag Verifier button.","2":"<strong>Tag Verifier \u2014 Confirmed<\/strong> \u2014 green success result showing the exact robots tag from live page source.","3":"<strong>Tag Verifier \u2014 Not Found<\/strong> \u2014 amber warning when the tag is missing (cache issue or toggle not saved).","4":"<strong>Admin Bar Indicator<\/strong> \u2014 red \"\u25cf Noindex\" and green \"\u25cf Indexed\" badges on the frontend and in the post editor.","5":"<strong>Post List Table<\/strong> \u2014 sortable \"SEO\" column with green \"\u25cf Indexed\" and red \"\u25cf Noindex\" badges per row.","6":"<strong>Bulk Actions<\/strong> \u2014 \"SEO: Add Noindex\" and \"SEO: Remove Noindex\" in the bulk action dropdown.","7":"<strong>Quick Edit<\/strong> \u2014 inline Noindex checkbox pre-populated from current post state.","8":"<strong>Settings Page<\/strong> \u2014 global and per-post-type toggle controls with sidebar information panel."}},"plugin_section":[],"plugin_tags":[683,6364,6499,4195,186],"plugin_category":[55],"plugin_contributors":[264051],"plugin_business_model":[],"class_list":["post-301894","plugin","type-plugin","status-publish","hentry","plugin_tags-meta","plugin_tags-noindex","plugin_tags-robots","plugin_tags-search-engine","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-sibokul","plugin_committers-sibokul"],"banners":{"banner":"https:\/\/ps.w.org\/simple-seo-noindex-toggle\/assets\/banner-772x250.png?rev=3544427","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/simple-seo-noindex-toggle\/assets\/icon-256x256.png?rev=3544427","icon_2x":"https:\/\/ps.w.org\/simple-seo-noindex-toggle\/assets\/icon-256x256.png?rev=3544427","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Simple SEO Noindex Toggle<\/strong> gives you precise, per-content control over which posts and pages are indexed by search engines \u2014 without the overhead of a full SEO plugin suite.<\/p>\n\n<p>In one click, you can exclude any post or page from search engine indexes using the standard <code>&lt;meta name=\"robots\" content=\"noindex, nofollow\"&gt;<\/code> tag. Every feature is built around a clean admin UI, WordPress coding standards, and zero unnecessary dependencies.<\/p>\n\n<h4>Core Features<\/h4>\n\n<p><strong>Noindex Toggle \u2014 Meta Box<\/strong><\/p>\n\n<p>A clean \"SEO Settings\" meta box appears in the post and page editor sidebar. It includes:<\/p>\n\n<ul>\n<li>A smooth CSS toggle switch<\/li>\n<li>A live status badge (\"Included in index\" \/ \"Excluded from index\") that updates instantly without a page reload<\/li>\n<li>A tag preview showing the exact meta tag that will be output when noindex is active<\/li>\n<li>A built-in Tag Verifier button (on published posts)<\/li>\n<\/ul>\n\n<p><strong>Built-in Tag Verifier<\/strong><\/p>\n\n<p>A \"Verify Tag in Source\" button inside the meta box performs a live server-side HTTP request to the post's public URL and checks whether the robots meta tag is actually present in the page source \u2014 using PHP's DOMDocument parser for reliable, regex-free detection. Results display inline with three clear states:<\/p>\n\n<ul>\n<li>\u2713 <strong>Confirmed<\/strong> \u2014 the noindex tag is live in the page source, showing the exact tag as found<\/li>\n<li>\u26a0 <strong>Not Found<\/strong> \u2014 the tag is missing from source, likely a caching issue<\/li>\n<li>\u2715 <strong>Error<\/strong> \u2014 the page could not be fetched (reason shown)<\/li>\n<\/ul>\n\n<p><strong>Admin Bar Indicator<\/strong><\/p>\n\n<p>A live SEO status badge appears in the WordPress admin bar showing:<\/p>\n\n<ul>\n<li><strong>\u25cf Noindex<\/strong> (red) \u2014 this page is excluded from search indexes<\/li>\n<li><strong>\u25cf Indexed<\/strong> (green) \u2014 this page is included in search indexes<\/li>\n<\/ul>\n\n<p>Visible both on the frontend (when browsing any singular post or page) and inside the WordPress admin post editor. Clicking the badge takes you directly to the post edit screen.<\/p>\n\n<p><strong>Post List Table Column<\/strong><\/p>\n\n<p>A sortable \"SEO\" column on the Posts and Pages list tables. Each row shows a colored status badge \u2014 red \"\u25cf Noindex\" or green \"\u25cf Indexed\" \u2014 giving editors an instant full-site noindex audit at a glance without opening individual posts.<\/p>\n\n<p>The column is sortable: click the column header to sort all noindexed content to the top.<\/p>\n\n<p><strong>Bulk Actions<\/strong><\/p>\n\n<p>Two new bulk actions in the Posts and Pages list tables:<\/p>\n\n<ul>\n<li><strong>SEO: Add Noindex<\/strong> \u2014 enables noindex on all selected posts in one action<\/li>\n<li><strong>SEO: Remove Noindex<\/strong> \u2014 clears noindex from all selected posts in one action<\/li>\n<\/ul>\n\n<p>A dismissible admin notice confirms how many posts were updated after each bulk action.<\/p>\n\n<p><strong>Quick Edit Support<\/strong><\/p>\n\n<p>A \"Noindex this post\" checkbox appears inside the Quick Edit row \u2014 toggle noindex without opening the full post editor. The checkbox is automatically pre-populated with the current post's noindex status when Quick Edit opens.<\/p>\n\n<p><strong>Settings Page<\/strong><\/p>\n\n<p>Found under <strong>Settings \u2192 Simple SEO Noindex<\/strong>. Provides:<\/p>\n\n<ul>\n<li>Enable Plugin Globally \u2014 master on\/off switch<\/li>\n<li>Enable for Posts \u2014 show meta box on posts<\/li>\n<li>Enable for Pages \u2014 show meta box on pages<\/li>\n<\/ul>\n\n<h4>What Gets Output<\/h4>\n\n<p>When noindex is enabled for a post or page, the following tag is added to <code>&lt;head&gt;<\/code> with priority 1 (near the very top, before any third-party tags):<\/p>\n\n<pre><code>&lt;meta name=\"robots\" content=\"noindex, nofollow\" \/&gt;\n<\/code><\/pre>\n\n<h4>Technical Highlights<\/h4>\n\n<ul>\n<li><strong>OOP architecture<\/strong> \u2014 clean singleton classes with <code>SSN_<\/code> prefix throughout<\/li>\n<li><strong>No jQuery<\/strong> \u2014 100% vanilla JavaScript with the Fetch API<\/li>\n<li><strong>DOMDocument parsing<\/strong> \u2014 Tag Verifier uses proper HTML parsing, not fragile regex<\/li>\n<li><strong>Secure<\/strong> \u2014 nonce verification, <code>sanitize_text_field()<\/code>, <code>esc_attr()<\/code>, <code>esc_html()<\/code>, <code>current_user_can()<\/code> on every save operation<\/li>\n<li><strong>Clean uninstall<\/strong> \u2014 all options and post meta removed on plugin deletion<\/li>\n<li><strong>Multisite compatible<\/strong> \u2014 uninstall routine handles all subsites<\/li>\n<li><strong>Zero frontend footprint<\/strong> \u2014 no scripts or stylesheets loaded on the public-facing site<\/li>\n<\/ul>\n\n<h4>Who Is This For?<\/h4>\n\n<p>SEO-focused site owners, developers, and marketing teams who need a precise, lightweight tool to manage content indexing without installing a full SEO plugin. Works standalone or alongside any existing SEO stack.<\/p>\n\n<h3>How to Verify the Plugin Is Working<\/h3>\n\n<p>There are three ways to confirm the noindex tag is active on the frontend:<\/p>\n\n<p><strong>Method 1 \u2014 Built-in Tag Verifier (recommended)<\/strong><\/p>\n\n<ol>\n<li>Enable the Noindex toggle on a published post and save.<\/li>\n<li>In the editor, click <strong>Verify Tag in Source<\/strong> in the SEO Settings meta box.<\/li>\n<li>A green \u2713 Confirmed result appears, showing the exact tag found in the live page source.<\/li>\n<\/ol>\n\n<p><strong>Method 2 \u2014 View Page Source<\/strong><\/p>\n\n<ol>\n<li>Visit the published post on the frontend.<\/li>\n<li>Right-click \u2192 <strong>View Page Source<\/strong> (or press <code>Ctrl+U<\/code> \/ <code>Cmd+U<\/code>).<\/li>\n<li>Press <code>Ctrl+F<\/code> and search for <code>noindex<\/code>.<\/li>\n<li>The tag <code>&lt;meta name=\"robots\" content=\"noindex, nofollow\" \/&gt;<\/code> appears near the top of <code>&lt;head&gt;<\/code>.<\/li>\n<\/ol>\n\n<p><strong>Method 3 \u2014 Google Search Console<\/strong><\/p>\n\n<ol>\n<li>Open <strong>URL Inspection<\/strong> in Google Search Console.<\/li>\n<li>Paste the post URL and click <strong>Test Live URL<\/strong>.<\/li>\n<li>Under <strong>Page Indexing<\/strong>, Google reports: <em>\"Page is not indexed \u2014 noindex tag detected\"<\/em>.<\/li>\n<li>Under <strong>HTTP response \u2192 Detected meta tags<\/strong>, the robots tag is listed explicitly.<\/li>\n<\/ol>\n\n<p><strong>Method 4 \u2014 site: Search Operator<\/strong><\/p>\n\n<p>After Google recrawls the page (typically 24\u201372 hours), searching <code>site:yourdomain.com\/post-slug<\/code> on Google returns no results, confirming the page has been de-indexed.<\/p>\n\n<!--section=installation-->\n<p><strong>From the WordPress Admin (recommended):<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>Simple SEO Noindex Toggle<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate Plugin<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Manual Upload:<\/strong><\/p>\n\n<ol>\n<li>Download the <code>simple-seo-noindex.zip<\/code> file.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Select the ZIP file and click <strong>Install Now<\/strong>.<\/li>\n<li>Click <strong>Activate Plugin<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Manual FTP:<\/strong><\/p>\n\n<ol>\n<li>Extract <code>simple-seo-noindex.zip<\/code>.<\/li>\n<li>Upload the <code>simple-seo-noindex\/<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Go to <strong>Plugins \u2192 Installed Plugins<\/strong> and activate.<\/li>\n<\/ol>\n\n<p><strong>First-Time Setup:<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Settings \u2192 Simple SEO Noindex<\/strong>.<\/li>\n<li>Confirm <strong>Enable Plugin<\/strong>, <strong>Enable for Posts<\/strong>, and <strong>Enable for Pages<\/strong> are all checked.<\/li>\n<li>Click <strong>Save Settings<\/strong>.<\/li>\n<li>Open any Post or Page in the editor \u2014 the <strong>SEO Settings<\/strong> meta box appears in the right sidebar.<\/li>\n<li>Toggle <strong>Noindex this page<\/strong> and save\/publish the post.<\/li>\n<li>Click <strong>Verify Tag in Source<\/strong> to confirm the tag is live in the page source.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20tag%20verifier%20shows%20%22not%20found%22%20even%20though%20the%20toggle%20is%20enabled.\"><h3>The Tag Verifier shows \"Not Found\" even though the toggle is enabled.<\/h3><\/dt>\n<dd><p>This is almost always a caching issue. The verifier sends a fresh request with a cache-busting query string and <code>no-cache<\/code> headers, but some caching plugins or CDNs may still serve a stale response. Purge your cache and click Verify again. You can also use Method 2 (View Page Source) to double-check directly.<\/p><\/dd>\n<dt id=\"the%20tag%20verifier%20says%20%22could%20not%20fetch%20page%20source%22.\"><h3>The Tag Verifier says \"Could not fetch page source\".<\/h3><\/dt>\n<dd><p>WordPress uses <code>wp_remote_get()<\/code> which makes an outbound HTTP request from the server back to the post URL. On some localhost or restricted hosting environments, the server cannot reach itself. Use Method 2 (View Page Source) in these cases. The verifier works correctly on standard live and staging servers.<\/p><\/dd>\n<dt id=\"does%20this%20conflict%20with%20yoast%20seo%2C%20rank%20math%2C%20or%20aioseo%3F\"><h3>Does this conflict with Yoast SEO, Rank Math, or AIOSEO?<\/h3><\/dt>\n<dd><p>It outputs a robots meta tag directly into <code>wp_head<\/code> at priority 1. If another SEO plugin also outputs its own robots tag on the same post, both tags will appear in <code>&lt;head&gt;<\/code>. Search engines honour the most restrictive instruction, so having both is functionally harmless. To avoid duplication, use only one tool's noindex feature per post.<\/p><\/dd>\n<dt id=\"does%20it%20support%20custom%20post%20types%3F\"><h3>Does it support custom post types?<\/h3><\/dt>\n<dd><p>Version 1.0.0 supports Posts and Pages. Custom post type support is planned for a future release.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20any%20custom%20database%20tables%3F\"><h3>Does the plugin add any custom database tables?<\/h3><\/dt>\n<dd><p>No. It uses WordPress core's <code>wp_options<\/code> table for plugin settings and <code>wp_postmeta<\/code> for per-post noindex flags. No custom tables are created.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>The <code>uninstall.php<\/code> routine removes all plugin settings (<code>ssn_settings<\/code> from <code>wp_options<\/code>) and all per-post noindex flags (<code>_ssn_noindex<\/code> from <code>wp_postmeta<\/code>). No orphaned data remains. The routine is multisite-aware and cleans up all subsites.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20gutenberg%20block%20editor%3F\"><h3>Does this work with the Gutenberg block editor?<\/h3><\/dt>\n<dd><p>Yes. The meta box renders correctly in the block editor sidebar panel. All features \u2014 toggle, status badge, tag preview \u2014 function identically in both the block editor and Classic Editor.<\/p><\/dd>\n<dt id=\"does%20the%20quick%20edit%20update%20noindex%20without%20a%20full%20page%20reload%3F\"><h3>Does the Quick Edit update noindex without a full page reload?<\/h3><\/dt>\n<dd><p>Yes. WordPress Quick Edit submits via its own AJAX handler. The Noindex checkbox is included in that submission and processed via the standard <code>save_post<\/code> hook \u2014 no additional AJAX or custom endpoint required.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20on%20a%20wordpress%20multisite%20installation%3F\"><h3>Can I use this on a WordPress Multisite installation?<\/h3><\/dt>\n<dd><p>Yes. Each subsite stores its own independent settings. The uninstall routine loops all subsites and removes all data cleanly.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20add%20any%20load%20to%20the%20frontend%3F\"><h3>Does this plugin add any load to the frontend?<\/h3><\/dt>\n<dd><p>No. The plugin loads no scripts or stylesheets on the frontend. The only frontend action is a single <code>get_post_meta()<\/code> call inside <code>wp_head<\/code> on singular pages \u2014 negligible performance impact.<\/p><\/dd>\n<dt id=\"will%20the%20plugin%20work%20if%20i%20have%20another%20seo%20plugin%20installed%3F\"><h3>Will the plugin work if I have another SEO plugin installed?<\/h3><\/dt>\n<dd><p>Yes. Simple SEO Noindex Toggle operates independently and does not interfere with other SEO plugins.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Noindex toggle meta box on Posts and Pages with live status badge, tag preview, and smooth CSS toggle switch.<\/li>\n<li>Built-in Tag Verifier \u2014 server-side fetch using PHP DOMDocument HTML parsing for reliable robots meta tag detection; displays the exact tag found in the live page source.<\/li>\n<li>Admin Bar Indicator \u2014 live red\/green SEO status badge on the frontend and inside the post editor admin bar.<\/li>\n<li>Post List Table Column \u2014 sortable \"SEO\" column with green\/red colored status badges on Posts and Pages list tables.<\/li>\n<li>Bulk Actions \u2014 \"SEO: Add Noindex\" and \"SEO: Remove Noindex\" for Posts and Pages list tables with dismissible result notice.<\/li>\n<li>Quick Edit Support \u2014 Noindex checkbox inside Quick Edit row, auto-populated from current post state via vanilla JavaScript.<\/li>\n<li>Settings page under Settings \u2192 Simple SEO Noindex with global enable and per-post-type controls.<\/li>\n<li>100% vanilla JavaScript \u2014 zero jQuery dependency, uses Fetch API.<\/li>\n<li>Full uninstall cleanup \u2014 removes all options and post meta on plugin deletion.<\/li>\n<li>WordPress Coding Standards compliant OOP singleton architecture with SSN_ prefix throughout.<\/li>\n<li>Multisite compatible.<\/li>\n<\/ul>","raw_excerpt":"A lightweight, professional SEO plugin \u2014 add a noindex robots tag to any post or page with a clean toggle, admin bar indicator, list column, bulk acti &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/301894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=301894"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sibokul"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=301894"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=301894"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=301894"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=301894"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=301894"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=301894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}