{"id":338135,"date":"2026-07-11T07:43:46","date_gmt":"2026-07-11T07:43:46","guid":{"rendered":"https:\/\/es.wordpress.org\/plugins\/niquelao-link-guard\/"},"modified":"2026-07-11T07:43:14","modified_gmt":"2026-07-11T07:43:14","slug":"niquelao-link-guard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/niquelao-link-guard\/","author":17836515,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.3","stable_tag":"0.6.3","tested":"7.0.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Niquelao Link Guard","header_author":"Koke P\u00e9rez","header_description":"Detecta enlaces internos y externos rotos mediante escaneo incremental de bajo consumo, sugiere correcciones basadas en datos del propio sitio (sin IA ni APIs externas) y permite corregirlos en bloque. Cero dependencias externas.","assets_banners_color":"2c354d","last_updated":"2026-07-11 07:43:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/kokeperez.es\/niquelao-link-guard","header_author_uri":"https:\/\/kokeperez.es","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.6.3":{"tag":"0.6.3","author":"kokenet","date":"2026-07-11 07:43:14"}},"upgrade_notice":{"0.6.3":"<p>Internal prefix renamed to &quot;niquelao_lg&quot; for WordPress.org compliance. Your settings are migrated automatically.<\/p>","0.6.1":"<p>Compliance and multisite polish. Recommended before submitting or updating on WordPress.org.<\/p>","0.6.0":"<p>Adds an undo history \/ trash so you can revert changes made by mistake. Recommended for all users.<\/p>","0.5.0":"<p>Adds local detection of suspicious\/malicious links and injected content. Recommended for all users.<\/p>","0.4.3":"<p>Shows where each link is used (post\/page) so you can decide what to do. Recommended for all users.<\/p>","0.4.2":"<p>Compliance and coding-standards pass. Recommended for all users.<\/p>","0.4.1":"<p>Adds the configurable settings screen. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3603712,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3603712,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3603712,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3603712,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3603712,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3603712,"resolution":"1","location":"assets","locale":"","width":1040,"height":1150},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3603712,"resolution":"2","location":"assets","locale":"","width":1040,"height":720},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3603712,"resolution":"3","location":"assets","locale":"","width":1040,"height":1150}},"screenshots":{"1":"Main panel with the links table: type, status, HTTP code, location, risk level and fix suggestions.","2":"History and trash screen with one-click undo for every change.","3":"Settings screen (\"Niquelao\" style) with scanning, cron, exclusions and the security detection card."}},"plugin_section":[],"plugin_tags":[14279,14280,732,726,186],"plugin_category":[52,55],"plugin_contributors":[268423],"plugin_business_model":[],"class_list":["post-338135","plugin","type-plugin","status-publish","hentry","plugin_tags-broken-links","plugin_tags-link-checker","plugin_tags-maintenance","plugin_tags-redirects","plugin_tags-seo","plugin_category-performance","plugin_category-seo-and-marketing","plugin_contributors-kokenet","plugin_committers-kokenet"],"banners":{"banner":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/banner-772x250.png?rev=3603712","banner_2x":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/banner-1544x500.png?rev=3603712","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/icon.svg?rev=3603712","icon":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/icon.svg?rev=3603712","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/screenshot-1.png?rev=3603712","caption":"Main panel with the links table: type, status, HTTP code, location, risk level and fix suggestions."},{"src":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/screenshot-2.png?rev=3603712","caption":"History and trash screen with one-click undo for every change."},{"src":"https:\/\/ps.w.org\/niquelao-link-guard\/assets\/screenshot-3.png?rev=3603712","caption":"Settings screen (\"Niquelao\" style) with scanning, cron, exclusions and the security detection card."}],"raw_content":"<!--section=description-->\n<p>Developed by <a href=\"https:\/\/kokeperez.es\">Koke Perez<\/a>.<\/p>\n\n<p>Niquelao Link Guard finds the broken links on your site and helps you fix them, with an approach designed to avoid hurting your hosting performance and to reduce false positives.<\/p>\n\n<p><strong>Key differences:<\/strong><\/p>\n\n<ul>\n<li><strong>Incremental scanning<\/strong>: it only analyzes new or edited content (when each post is saved), instead of re-scanning the whole site over and over.<\/li>\n<li><strong>Low resource usage<\/strong>: HTTP checks run in batches in the background via cron, never during your visitors page loads. Batch size and pause between requests are configurable.<\/li>\n<li><strong>Fewer false positives<\/strong>: retries with increasing delays (1, 3 and 7 days) and respect for the <code>Retry-After<\/code> header before confirming a link as broken. 403 responses and timeouts are marked as \"review\", not \"broken\".<\/li>\n<li><strong>100% local suggestions<\/strong>: for broken internal links, it proposes the correct URL by matching slug\/title against your own database. For 301\/302 redirects, it suggests updating to the final URL. No AI calls, no API keys, no subscriptions.<\/li>\n<li><strong>Bulk fixing<\/strong>: remove the link keeping the text, replace it with the suggested or a manual URL, or mark it as ignored, all from the admin panel.<\/li>\n<li><strong>Undo history \/ trash<\/strong>: every change is logged and can be reverted. Content edits are restored from the WordPress revision created before the change, and deleted or ignored records can be restored too.<\/li>\n<li><strong>Security scan (local)<\/strong>: flags suspicious or malicious links using local heuristics - spam keywords, text\/target mismatch (phishing), obfuscated URLs, risky TLDs, URL shorteners, dangerous schemes - plus injected content like scripts, iframes and hidden text. A risk level and its reasons are shown for full transparency.<\/li>\n<li><strong>Transparency<\/strong>: each result shows the exact HTTP status code and the reason for its classification.<\/li>\n<li><strong>Prioritization<\/strong>: links are sorted by number of occurrences so you fix the highest-impact ones first.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>niquelao-link-guard<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin from the WordPress \"Plugins\" menu.<\/li>\n<li>Go to \"Link Guard\" in the admin menu and click \"Scan all content\".<\/li>\n<li>Adjust the behavior under \"Link Guard -&gt; Settings\".<\/li>\n<\/ol>\n\n<p>Multisite: activate the plugin per site (site by site), not network-wide. Each site keeps its own link tables, settings and history. Network activation is supported and will set up every existing site, but per-site activation is the recommended and tested mode.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20send%20data%20to%20external%20services%3F\"><h3>Does it send data to external services?<\/h3><\/dt>\n<dd><p>No. The only network requests are the HTTP checks to your own link URLs, which is the plugin's core function. There is no AI, no API keys and no subscriptions.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. It is designed to run per site: each site has its own scan tables, settings and undo history, and data is isolated between sites. Per-site activation is the recommended mode. If you activate it network-wide, it will set up every existing site automatically, but it does not add a network-level admin screen.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. Checks run in batches in the background using WP-Cron, never during page loads for visitors. You can reduce the batch size and increase the pause between requests in the settings.<\/p><\/dd>\n<dt id=\"does%20it%20modify%20my%20content%20without%20permission%3F\"><h3>Does it modify my content without permission?<\/h3><\/dt>\n<dd><p>No. Fixes (remove\/replace) are only applied when you confirm them from the panel.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>Renamed the internal code prefix from \"nlg\" to \"niquelao_lg\" (classes, options, constants, hooks, transients) to meet the WordPress.org prefix requirement and match the rest of the Niquelao suite. Settings are migrated automatically on update. Database table names were already unique and are unchanged.<\/li>\n<li>Added kokenet to the contributors list.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Compliance polish for the WordPress.org review: exact-slug lookups in the suggester now use the core <code>get_page_by_path()<\/code> API instead of a direct SQL query; the outgoing User-Agent header now runs the site URL through <code>esc_url_raw()<\/code>; and multisite behavior is documented (per-site design, with network activation setting up every existing site). No functional change for single-site installs.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>New history and trash screen: every content or record change is logged and can be undone. Content changes are restored from the WordPress revision created before the change; deleted records and ignored links can be restored too. Entries older than 30 days are pruned automatically.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>New local security scan: flags suspicious or malicious links (spam keywords, phishing text\/target mismatch, obfuscated URLs, risky TLDs, URL shorteners, dangerous schemes) and injected content (scripts, iframes, inline event handlers, hidden text). 100% local, no external services.<\/li>\n<li>New \"Risk\" column with level and transparent reasons, a \"Suspicious\" filter, and a dashboard alert when high-risk links are found.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Occurrences column now lists the posts and pages where each link appears, with view and edit links for each one.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Coding standards and WordPress.org guideline compliance (readme in English, documented direct DB access).<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Settings screen with scanning, performance and exclusion controls.<\/li>\n<li>readme.txt and repository preparation.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Local suggester for broken internal links by slug\/title similarity.<\/li>\n<li>Update suggestion for 301\/302 redirects.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Single and bulk actions: remove, replace, ignore, recheck.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Core: incremental scanning, cron-based checking and results panel.<\/li>\n<\/ul>","raw_excerpt":"Find broken internal and external links with low-resource incremental scanning, get local fix suggestions, and repair them in bulk.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338135","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=338135"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kokenet"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338135"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338135"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338135"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338135"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338135"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}