{"id":2,"date":"2026-06-13T12:25:53","date_gmt":"2026-06-13T12:25:53","guid":{"rendered":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/?page_id=2"},"modified":"2026-06-13T12:51:45","modified_gmt":"2026-06-13T12:51:45","slug":"home","status":"publish","type":"page","link":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/home\/","title":{"rendered":"Home"},"content":{"rendered":"\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">NOTE<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-text-align-center wp-block-paragraph\">This simulator allows you to test out <strong>Dead Link Checker Pro<\/strong> in real-time.<br>Please be aware that the final product&#8217;s design and functionality will differ from what you see in this demo.<\/p>\n<\/blockquote>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n        <script>\n            window.fdlcDemoInitialLinks = [{\"id\":1,\"status_code\":200,\"url\":\"https:\\\/\\\/wordpress.org\\\/plugins\\\/dead-link-checker-pro\\\/\",\"anchor_text\":\"Plugin Page\",\"source_title\":\"Welcome to Astra\",\"source_type\":\"page\",\"source_id\":12,\"link_type\":\"external\",\"last_check\":\"5 mins ago\",\"is_broken\":false,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":2,\"status_code\":404,\"url\":\"https:\\\/\\\/awplife.com\\\/non-existent-plugin-details\\\/\",\"anchor_text\":\"Our Premium Extensions\",\"source_title\":\"Services Overview\",\"source_type\":\"page\",\"source_id\":15,\"link_type\":\"external\",\"last_check\":\"10 mins ago\",\"is_broken\":true,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":3,\"status_code\":301,\"url\":\"http:\\\/\\\/yoursite.com\\\/about-us\",\"anchor_text\":\"About Us\",\"source_title\":\"Main Header Menu\",\"source_type\":\"menu\",\"source_id\":4,\"link_type\":\"internal\",\"last_check\":\"12 mins ago\",\"is_broken\":false,\"is_warning\":true,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"https:\\\/\\\/yoursite.com\\\/about\\\/\",\"redirect_count\":1},{\"id\":4,\"status_code\":404,\"url\":\"https:\\\/\\\/images.unsplash.com\\\/photo-broken-id-1234.jpg\",\"anchor_text\":\"Banner Image Background\",\"source_title\":\"Homepage Hero Banner\",\"source_type\":\"custom_field\",\"source_id\":88,\"link_type\":\"image\",\"last_check\":\"1 hour ago\",\"is_broken\":true,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":5,\"status_code\":200,\"url\":\"https:\\\/\\\/github.com\\\/FARAZFRANK\\\/dead-link-checker-pro\\\/issues\",\"anchor_text\":\"Submit an Issue\",\"source_title\":\"Documentation Page\",\"source_type\":\"post\",\"source_id\":24,\"link_type\":\"external\",\"last_check\":\"2 hours ago\",\"is_broken\":false,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":6,\"status_code\":\"error\",\"url\":\"https:\\\/\\\/invalid-dns-lookup-failure-domain.org\",\"anchor_text\":\"Partner Website\",\"source_title\":\"Footer Links Widget\",\"source_type\":\"widget\",\"source_id\":2,\"link_type\":\"external\",\"last_check\":\"3 hours ago\",\"is_broken\":true,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":7,\"status_code\":200,\"url\":\"https:\\\/\\\/awplife.com\\\/wp-content\\\/uploads\\\/logo.png\",\"anchor_text\":\"A WP Life Logo\",\"source_title\":\"Footer Widget\",\"source_type\":\"widget\",\"source_id\":3,\"link_type\":\"image\",\"last_check\":\"4 hours ago\",\"is_broken\":false,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":8,\"status_code\":200,\"url\":\"https:\\\/\\\/yoursite.com\\\/contact\\\/\",\"anchor_text\":\"Get In Touch\",\"source_title\":\"Contact Form Comment\",\"source_type\":\"comment\",\"source_id\":104,\"link_type\":\"internal\",\"last_check\":\"6 hours ago\",\"is_broken\":false,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":9,\"status_code\":504,\"url\":\"http:\\\/\\\/example.com\\\/slow-loading-timeout-page\",\"anchor_text\":\"Resource Guide\",\"source_title\":\"Resource Directory\",\"source_type\":\"post\",\"source_id\":42,\"link_type\":\"external\",\"last_check\":\"12 hours ago\",\"is_broken\":false,\"is_warning\":true,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0},{\"id\":10,\"status_code\":200,\"url\":\"https:\\\/\\\/yoursite.com\\\/services\\\/web-design\",\"anchor_text\":\"Web Design Services\",\"source_title\":\"Astra Blog Post\",\"source_type\":\"post\",\"source_id\":110,\"link_type\":\"internal\",\"last_check\":\"1 day ago\",\"is_broken\":false,\"is_warning\":false,\"is_dismissed\":false,\"is_removed\":false,\"redirect_url\":\"\",\"redirect_count\":0}];\n            window.fdlcDemoInitialLogs = [{\"id\":104,\"type\":\"Scheduled\",\"status\":\"completed\",\"started\":\"June 13, 2026 8:00 am\",\"completed\":\"June 13, 2026 8:04 am\",\"links\":\"10\\\/10\",\"broken\":3},{\"id\":103,\"type\":\"Manual\",\"status\":\"completed\",\"started\":\"June 12, 2026 3:15 pm\",\"completed\":\"June 12, 2026 3:19 pm\",\"links\":\"10\\\/10\",\"broken\":3},{\"id\":102,\"type\":\"Fresh Scan\",\"status\":\"completed\",\"started\":\"June 11, 2026 10:30 am\",\"completed\":\"June 11, 2026 10:36 am\",\"links\":\"10\\\/10\",\"broken\":4},{\"id\":101,\"type\":\"Scheduled\",\"status\":\"failed\",\"started\":\"June 10, 2026 8:00 am\",\"completed\":\"June 10, 2026 8:01 am\",\"links\":\"2\\\/10\",\"broken\":1}];\n        <\/script>\n\n        <!-- Simulated WordPress Admin Dashboard Wrapper -->\n        <div class=\"wp-admin-mock-shell\">\n            \n            <!-- WordPress Top Admin Bar -->\n            <div class=\"wp-admin-mock-topbar\">\n                <div class=\"wp-admin-mock-topbar-left\">\n                    <span class=\"dashicons dashicons-wordpress wp-admin-mock-wp-logo\"><\/span>\n                    <span class=\"wp-admin-mock-site-name\">Demo Sandbox<\/span>\n                    <span class=\"dashicons dashicons-admin-home\" title=\"Visit Site\"><\/span>\n                    <span class=\"dashicons dashicons-update\" title=\"Updates\"><\/span>\n                    <span class=\"dashicons dashicons-admin-comments\" title=\"Comments\"><\/span>\n                    <span class=\"wp-admin-mock-new-btn\">+ New<\/span>\n                <\/div>\n                <div class=\"wp-admin-mock-topbar-right\">\n                    <span>Howdy, administrator<\/span>\n                    <span class=\"wp-admin-mock-avatar\">\ud83d\udc64<\/span>\n                <\/div>\n            <\/div>\n\n            <div class=\"wp-admin-mock-body\">\n                <!-- WordPress Navigation Sidebar -->\n                <aside class=\"wp-admin-mock-sidebar\">\n                    <ul class=\"wp-admin-mock-menu\">\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#\" class=\"wp-admin-mock-menu-link\"><span class=\"dashicons dashicons-dashboard\"><\/span> Dashboard<\/a>\n                        <\/li>\n                        <li class=\"wp-admin-mock-menu-separator\"><\/li>\n                        \n                        <!-- Plugin Navigation Menu Items -->\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#dashboard\" class=\"wp-admin-mock-menu-link active\" data-panel=\"dashboard\" data-tooltip=\"Dashboard: Monitor all your links, run scans &amp; review broken links at a glance.\">\n                                <span class=\"dashicons dashicons-admin-links\"><\/span> Dashboard\n                            <\/a>\n                        <\/li>\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#post-types\" class=\"wp-admin-mock-menu-link\" data-panel=\"post-types\" data-tooltip=\"Post Type Stats: See a full breakdown of links grouped by post type.\">\n                                <span class=\"dashicons dashicons-chart-bar\"><\/span> Post Type Stats\n                            <\/a>\n                        <\/li>\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#settings\" class=\"wp-admin-mock-menu-link\" data-panel=\"settings\" data-tooltip=\"Settings: Configure scan schedules, ignored URLs, and post type rules.\">\n                                <span class=\"dashicons dashicons-admin-generic\"><\/span> Settings\n                            <\/a>\n                        <\/li>\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#history\" class=\"wp-admin-mock-menu-link\" data-panel=\"history\" data-tooltip=\"Scan History: Review past scan records, durations, and link totals over time.\">\n                                <span class=\"dashicons dashicons-backup\"><\/span> Scan History\n                            <\/a>\n                        <\/li>\n                        <li class=\"wp-admin-mock-menu-item\">\n                            <a href=\"#help\" class=\"wp-admin-mock-menu-link\" data-panel=\"help\" data-tooltip=\"Help &amp; Docs: Quick-start guides, shortcode reference, and support links.\">\n                                <span class=\"dashicons dashicons-editor-help\"><\/span> Help\n                            <\/a>\n                        <\/li>\n\n                        \n\n                    <\/ul>\n                <\/aside>\n\n                <!-- WordPress Main Content Area Workspace -->\n                <main class=\"wp-admin-mock-content\">\n                    <div class=\"wrap frankdlc-wrap\">\n                        \n                        <!-- ================= DASHBOARD PANEL ================= -->\n                        <div id=\"frankdlc-panel-dashboard\" class=\"frankdlc-panel active\">\n                            <!-- Page Title Section -->\n                            <div class=\"frankdlc-header\">\n                                <div class=\"frankdlc-header-left\">\n                                    <h1>\n                                        Frank Dead Link Checker Pro\n                                        <span class=\"frankdlc-version-badge\">v3.1.4<\/span>\n                                    <\/h1>\n                                    <span class=\"frankdlc-last-scan\">Last scan: 5 mins ago<\/span>\n                                    <span class=\"frankdlc-queue-status frankdlc-queue-reliable\" title=\"Reliable background processing\">\n                                        <span class=\"dashicons dashicons-yes-alt\"><\/span>\n                                        Action Scheduler\n                                    <\/span>\n                                <\/div>\n                                <div class=\"frankdlc-header-actions\">\n                                    <button type=\"button\" id=\"frankdlc-scan-btn\" class=\"button button-primary button-hero\" data-tooltip=\"Quick Scan: Scan your database for new or modified links immediately.\">\n                                        <span class=\"dashicons dashicons-search\"><\/span> Scan Now\n                                    <\/button>\n                                    <button type=\"button\" id=\"frankdlc-fresh-scan-btn\" class=\"button button-hero\" data-tooltip=\"Full Reset & Scan: Clear all saved links and start scanning from scratch.\">\n                                        <span class=\"dashicons dashicons-update\"><\/span> Fresh Scan\n                                    <\/button>\n                                    <button type=\"button\" id=\"frankdlc-stop-btn\" class=\"button button-hero frankdlc-stop-btn frankdlc-hidden\" data-tooltip=\"Halt Scan: Safely stop the currently running link check process.\">\n                                        <span class=\"dashicons dashicons-no\"><\/span> Stop Scan\n                                    <\/button>\n                                    <div class=\"frankdlc-export-dropdown\">\n                                        <button type=\"button\" id=\"frankdlc-export-btn\" class=\"button button-hero frankdlc-btn-inactive\" data-tooltip=\"You can export links in CSV and JSON Formats\">\n                                            <span class=\"dashicons dashicons-download\"><\/span> Export\n                                            <span class=\"dashicons dashicons-arrow-down-alt2\"><\/span>\n                                        <\/button>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n\n                            <!-- Relocated Notification Notices -->\n                            <div class=\"frankdlc-notices-container\" id=\"frankdlc-notices-container\">\n                                <!-- Notice values updated dynamically in script -->\n                            <\/div>\n\n                            <!-- Scan Progress bar -->\n                            <div id=\"frankdlc-scan-progress\" class=\"frankdlc-scan-progress frankdlc-hidden\">\n                                <div class=\"frankdlc-progress-bar\">\n                                    <div class=\"frankdlc-progress-fill\"><\/div>\n                                <\/div>\n                                <span class=\"frankdlc-progress-text\">Scanning database content...<\/span>\n                            <\/div>\n\n                            <!-- Stats Cards Grid -->\n                            <div class=\"frankdlc-stats-grid\">\n                                <div class=\"frankdlc-stat-card frankdlc-stat-broken\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-no-alt\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-count-broken\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Broken Links<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-warning\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-warning\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-count-warning\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Warnings<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-working\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-yes-alt\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-count-working\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Working<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-total\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-admin-links\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-count-total\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Total Links<\/span>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n\n                            <!-- Table Filters & Search -->\n                            <div class=\"frankdlc-filters\">\n                                <ul class=\"frankdlc-filter-tabs\">\n                                    <li><a href=\"#\" class=\"active\" data-filter=\"all\" data-tooltip=\"All: View every scanned link regardless of status.\">All <span id=\"frankdlc-tab-all\">(0)<\/span><\/a><\/li>\n                                    <li><a href=\"#\" data-filter=\"broken\" data-tooltip=\"Broken: Links returning 4xx\/5xx errors or DNS failures \u2014 fix these!\">Broken <span id=\"frankdlc-tab-broken\">(0)<\/span><\/a><\/li>\n                                    <li><a href=\"#\" data-filter=\"warning\" data-tooltip=\"Warnings: Links with redirects or slow responses \u2014 review recommended.\">Warnings <span id=\"frankdlc-tab-warning\">(0)<\/span><\/a><\/li>\n                                    <li><a href=\"#\" data-filter=\"working\" data-tooltip=\"Working: Healthy links returning a 200 OK response.\">Working <span id=\"frankdlc-tab-working\">(0)<\/span><\/a><\/li>\n                                    <li><a href=\"#\" data-filter=\"dismissed\" data-tooltip=\"Dismissed: Links you have marked to ignore in future scans.\">Dismissed <span id=\"frankdlc-tab-dismissed\">(0)<\/span><\/a><\/li>\n                                    <li><a href=\"#\" data-filter=\"removed\" data-tooltip=\"Removed: Links that have been unlinked or deleted from your content.\">Removed <span id=\"frankdlc-tab-removed\">(0)<\/span><\/a><\/li>\n                                <\/ul>\n                                <div class=\"frankdlc-filter-right\">\n                                    <div class=\"frankdlc-search-form\">\n                                        <input type=\"search\" id=\"frankdlc-search-input\" placeholder=\"Search URLs...\">\n                                        <button type=\"button\" class=\"button\"><span class=\"dashicons dashicons-search\"><\/span><\/button>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n\n                            <!-- Advanced Filters Form -->\n                            <div class=\"frankdlc-advanced-filters\">\n                                <div class=\"frankdlc-filter-form\">\n                                    <div class=\"frankdlc-filter-group\">\n                                        <label>Link Type:<\/label>\n                                        <select id=\"frankdlc-filter-link-type\">\n                                            <option value=\"all\">All Types<\/option>\n                                            <option value=\"internal\">Internal<\/option>\n                                            <option value=\"external\">External<\/option>\n                                            <option value=\"image\">Image<\/option>\n                                        <\/select>\n                                    <\/div>\n\n                                    <div class=\"frankdlc-filter-group\">\n                                        <label>Post Type:<\/label>\n                                        <select id=\"frankdlc-filter-source-type\">\n                                            <option value=\"all\">All Post Types<\/option>\n                                            <option value=\"post\">Posts<\/option>\n                                            <option value=\"page\">Pages<\/option>\n                                            <option value=\"menu\">Menus<\/option>\n                                            <option value=\"widget\">Widgets<\/option>\n                                            <option value=\"comment\">Comments<\/option>\n                                            <option value=\"custom_field\">Custom Fields<\/option>\n                                        <\/select>\n                                    <\/div>\n\n                                    <div class=\"frankdlc-filter-group\">\n                                        <label>HTTP Status:<\/label>\n                                        <select id=\"frankdlc-filter-http-status\">\n                                            <option value=\"all\">Any Status<\/option>\n                                            <option value=\"200\">200 OK<\/option>\n                                            <option value=\"301\">301 Redirect<\/option>\n                                            <option value=\"404\">404 Not Found<\/option>\n                                            <option value=\"504\">504 Gateway Timeout<\/option>\n                                            <option value=\"error\">DNS Error<\/option>\n                                        <\/select>\n                                    <\/div>\n\n                                    <!-- Added Date Range Input fields matching the actual plugin -->\n                                    <div class=\"frankdlc-filter-group\">\n                                        <label>Date Range:<\/label>\n                                        <input type=\"date\" id=\"frankdlc-filter-date-from\" placeholder=\"From\">\n                                        <span>-<\/span>\n                                        <input type=\"date\" id=\"frankdlc-filter-date-to\" placeholder=\"To\">\n                                    <\/div>\n\n                                    <button type=\"button\" id=\"frankdlc-apply-filters-btn\" class=\"button\">Apply Filters<\/button>\n                                    <button type=\"button\" id=\"frankdlc-clear-filters-btn\" class=\"button frankdlc-clear-filters\">Clear<\/button>\n                                <\/div>\n                            <\/div>\n\n                            <!-- Bulk Actions -->\n                            <div class=\"frankdlc-bulk-actions\">\n                                <div class=\"frankdlc-bulk-actions-left\">\n                                    <select id=\"frankdlc-bulk-action\">\n                                        <option value=\"\">Bulk Actions<\/option>\n                                        <option value=\"recheck\">Recheck<\/option>\n                                        <option value=\"dismiss\">Dismiss<\/option>\n                                        <option value=\"undismiss\">Restore<\/option>\n                                        <option value=\"unlink\">Unlink<\/option>\n                                        <option value=\"delete\">Delete<\/option>\n                                    <\/select>\n                                    <button type=\"button\" id=\"frankdlc-bulk-apply\" class=\"button\">Apply<\/button>\n                                    <span class=\"frankdlc-bulk-result\"><\/span>\n                                <\/div>\n                                <div class=\"frankdlc-per-page\">\n                                    <label for=\"frankdlc-per-page-select\" class=\"frankdlc-per-page-label\">Rows per page:<\/label>\n                                    <select id=\"frankdlc-per-page-select\" class=\"frankdlc-per-page-select\">\n                                        <option value=\"5\" selected>5<\/option>\n                                        <option value=\"10\">10<\/option>\n                                        <option value=\"20\">20<\/option>\n                                        <option value=\"50\">50<\/option>\n                                    <\/select>\n                                <\/div>\n                            <\/div>\n\n                            <!-- Links Table -->\n                            <table class=\"frankdlc-links-table wp-list-table widefat fixed striped\" width=\"100%\">\n                                <thead>\n                                    <tr>\n                                        <th class=\"check-column\"><input type=\"checkbox\" id=\"frankdlc-select-all\"><\/th>\n                                        <th class=\"frankdlc-col-status sortable\">\n                                            <a href=\"#\">\n                                                <span>Status<\/span>\n                                                <span class=\"sorting-indicator\"><\/span>\n                                            <\/a>\n                                        <\/th>\n                                        <th class=\"frankdlc-col-url sortable\">\n                                            <a href=\"#\">\n                                                <span>URL<\/span>\n                                                <span class=\"sorting-indicator\"><\/span>\n                                            <\/a>\n                                        <\/th>\n                                        <th class=\"frankdlc-col-source\">Source<\/th>\n                                        <th class=\"frankdlc-col-type sortable\">\n                                            <a href=\"#\">\n                                                <span>Type<\/span>\n                                                <span class=\"sorting-indicator\"><\/span>\n                                            <\/a>\n                                        <\/th>\n                                        <th class=\"frankdlc-col-checked sortable\">\n                                            <a href=\"#\">\n                                                <span>Last Check<\/span>\n                                                <span class=\"sorting-indicator\"><\/span>\n                                            <\/a>\n                                        <\/th>\n                                        <th class=\"frankdlc-col-actions\">Actions<\/th>\n                                    <\/tr>\n                                <\/thead>\n                                <tbody id=\"frankdlc-links-tbody\">\n                                    <!-- Populated dynamically via JS -->\n                                <\/tbody>\n                            <\/table>\n                            \n                            <!-- Pagination wrapper -->\n                            <div class=\"frankdlc-pagination\" id=\"frankdlc-pagination\">\n                                <!-- Populated dynamically via JS -->\n                            <\/div>\n                        <\/div>\n\n                        <!-- ================= POST TYPE STATS PANEL ================= -->\n                        <div id=\"frankdlc-panel-post-types\" class=\"frankdlc-panel\">\n                            <h1>Link Stats by Post Type<\/h1>\n                            <p class=\"description\">View the total internal, external, and broken links grouped by each Post Type or source.<\/p>\n\n                            <!-- Mini Summary stats grid (Custom class replaces inline styles) -->\n                            <div class=\"frankdlc-stats-grid frankdlc-ptstats-grid\">\n                                <div class=\"frankdlc-stat-card frankdlc-stat-total\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-admin-links\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-ptstat-total\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Total Links<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-working frankdlc-ptcard-internal\">\n                                    <div class=\"frankdlc-stat-icon frankdlc-pticon-internal\"><span class=\"dashicons dashicons-admin-links\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-ptstat-internal\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Internal Links<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-warning frankdlc-ptcard-external\">\n                                    <div class=\"frankdlc-stat-icon frankdlc-pticon-external\"><span class=\"dashicons dashicons-admin-links\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-ptstat-external\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">External Links<\/span>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"frankdlc-stat-card frankdlc-stat-broken\">\n                                    <div class=\"frankdlc-stat-icon\"><span class=\"dashicons dashicons-no-alt\"><\/span><\/div>\n                                    <div class=\"frankdlc-stat-content\">\n                                        <span class=\"frankdlc-stat-value\" id=\"frankdlc-ptstat-broken\">0<\/span>\n                                        <span class=\"frankdlc-stat-label\">Broken Links<\/span>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n\n                            <table class=\"frankdlc-links-table wp-list-table widefat fixed striped frankdlc-ptstats-table\" width=\"100%\">\n                                <thead>\n                                    <tr>\n                                        <th class=\"frankdlc-pt-hdr-name frankdlc-pt-col-name\">Post Type \/ Source<\/th>\n                                        <th class=\"frankdlc-pt-hdr-center frankdlc-pt-col-total\">Total Links<\/th>\n                                        <th class=\"frankdlc-pt-hdr-center frankdlc-pt-col-internal\">Internal<\/th>\n                                        <th class=\"frankdlc-pt-hdr-center frankdlc-pt-col-external\">External<\/th>\n                                        <th class=\"frankdlc-pt-hdr-center frankdlc-pt-col-broken\">Broken<\/th>\n                                        <th class=\"frankdlc-pt-hdr-center frankdlc-pt-col-warning\">Warnings<\/th>\n                                        <th class=\"frankdlc-pt-hdr-actions frankdlc-pt-col-actions\">Actions<\/th>\n                                    <\/tr>\n                                <\/thead>\n                                <tbody id=\"frankdlc-posttypes-tbody\">\n                                    <!-- Rendered dynamically by JS -->\n                                <\/tbody>\n                            <\/table>\n                        <\/div>\n\n                        <!-- ================= SETTINGS PANEL ================= -->\n                        <div id=\"frankdlc-panel-settings\" class=\"frankdlc-panel frankdlc-settings-page\">\n                            <h1>Frank Dead Link Checker Settings<\/h1>\n                            \n                            <div class=\"frankdlc-settings-tabs\">\n                                <nav class=\"frankdlc-tabs-nav\">\n                                    <a href=\"#general\" class=\"active\" data-tooltip=\"General: Set scan frequency, timeouts, and basic link checker behaviour.\">General<\/a>\n                                    <a href=\"#scope\" data-tooltip=\"Scan Scope: Choose which post types, pages, and content areas to include in scans.\">Scan Scope<\/a>\n                                    <a href=\"#exclusions\" data-tooltip=\"Exclusions: Add URLs or domains to skip during link scanning.\">Exclusions<\/a>\n                                    <a href=\"#notifications\" data-tooltip=\"Notifications: Configure email alerts when broken links are found.\">Notifications<\/a>\n                                    <a href=\"#advanced\" data-tooltip=\"Advanced: Fine-tune concurrency, user-agent, and request timeout settings.\">Advanced<\/a>\n                                    <a href=\"#tools\" data-tooltip=\"Tools: Run manual maintenance tasks, clear data, or reset scan history.\">Tools<\/a>\n                                <\/nav>\n                                \n                                <div class=\"frankdlc-tabs-content\">\n                                    <!-- General Settings Panel -->\n                                    <div id=\"general\" class=\"frankdlc-tab-panel active\">\n                                        <table class=\"form-table\">\n                                            <tbody>\n                                                <tr>\n                                                    <th scope=\"row\">Scan Type<\/th>\n                                                    <td>\n                                                        <fieldset>\n                                                            <label>\n                                                                <input type=\"radio\" name=\"FRANKDLC_settings[scan_type]\" value=\"automatic\" checked>\n                                                                Automatic\n                                                                <span class=\"description\">Scans run automatically based on the frequency below.<\/span>\n                                                            <\/label><br>\n                                                            <label>\n                                                                <input type=\"radio\" name=\"FRANKDLC_settings[scan_type]\" value=\"manual\">\n                                                                Manual\n                                                                <span class=\"description\">Scans only run when you click the Scan button.<\/span>\n                                                            <\/label>\n                                                        <\/fieldset>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <th scope=\"row\">Scan Frequency<\/th>\n                                                    <td>\n                                                        <select name=\"FRANKDLC_settings[scan_frequency]\">\n                                                            <option value=\"hourly\">Hourly<\/option>\n                                                            <option value=\"twicedaily\">Twice Daily<\/option>\n                                                            <option value=\"daily\">Daily<\/option>\n                                                            <option value=\"weekly\" selected>Weekly<\/option>\n                                                            <option value=\"manual\">Manual Only<\/option>\n                                                        <\/select>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <th scope=\"row\">Request Timeout<\/th>\n                                                    <td>\n                                                        <input type=\"number\" name=\"FRANKDLC_settings[timeout]\" value=\"30\" min=\"5\" max=\"120\"> seconds\n                                                        <p class=\"description\">Maximum time to wait for a response from a link.<\/p>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n\n                                    <!-- Scan Scope Settings Panel -->\n                                    <div id=\"scope\" class=\"frankdlc-tab-panel\">\n                                        <table class=\"form-table\">\n                                            <tbody>\n                                                <tr>\n                                                    <th scope=\"row\">Content to Scan<\/th>\n                                                    <td>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_posts]\" value=\"1\" checked> Posts<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_pages]\" value=\"1\" checked> Pages<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_attachments]\" value=\"1\" checked> Attachments<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_comments]\" value=\"1\"> Comments<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_widgets]\" value=\"1\" checked> Widgets<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_menus]\" value=\"1\" checked> Menus<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_custom_fields]\" value=\"1\"> Custom Fields (ACF)<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[scan_cpt]\" value=\"1\" id=\"frankdlc-cpt-check\"> Custom Post Types<\/label><br>\n                                                        \n                                                        <div id=\"frankdlc-cpt-nested\" class=\"frankdlc-cpt-select-wrapper frankdlc-hidden frankdlc-settings-nested-cpt\">\n                                                            <select multiple=\"multiple\" class=\"frankdlc-cpt-multiselect\">\n                                                                <option value=\"portfolio\">Portfolio (portfolio)<\/option>\n                                                                <option value=\"product\">Products (product)<\/option>\n                                                                <option value=\"testimonial\">Testimonials (testimonial)<\/option>\n                                                            <\/select>\n                                                            <p class=\"description\">Hold Ctrl\/Cmd to select multiple post types.<\/p>\n                                                        <\/div>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <th scope=\"row\">Link Types<\/th>\n                                                    <td>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[check_internal]\" value=\"1\" checked> Internal Links<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[check_external]\" value=\"1\" checked> External Links<\/label><br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[check_images]\" value=\"1\" checked> Images<\/label>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n\n                                    <!-- Exclusions Panel -->\n                                    <div id=\"exclusions\" class=\"frankdlc-tab-panel\">\n                                        <table class=\"form-table\">\n                                            <tbody>\n                                                <tr>\n                                                    <th scope=\"row\">Excluded Domains<\/th>\n                                                    <td>\n                                                        <textarea name=\"FRANKDLC_settings[excluded_domains]\" rows=\"5\" cols=\"50\" class=\"large-text\" placeholder=\"example.com&#10;youtube.com\"><\/textarea>\n                                                        <p class=\"description\">Enter one domain per line (e.g., example.com). Links to these domains will be ignored.<\/p>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n\n                                    <!-- Notifications Panel -->\n                                    <div id=\"notifications\" class=\"frankdlc-tab-panel\">\n                                        <table class=\"form-table\">\n                                            <tbody>\n                                                <tr>\n                                                    <th scope=\"row\">Email Notifications<\/th>\n                                                    <td>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[email_notifications]\" value=\"1\" id=\"frankdlc-email-check\" checked> Enable email notifications<\/label>\n                                                        \n                                                        <div id=\"frankdlc-email-nested\" class=\"frankdlc-settings-nested-email\">\n                                                            <label>Frequency:<\/label><br>\n                                                            <select name=\"FRANKDLC_settings[email_frequency]\" class=\"frankdlc-email-select\">\n                                                                <option value=\"daily\">Daily<\/option>\n                                                                <option value=\"weekly\" selected>Weekly<\/option>\n                                                            <\/select>\n                                                            <br><br>\n                                                            <label>Recipients:<\/label><br>\n                                                            <textarea name=\"FRANKDLC_settings[email_recipients]\" rows=\"3\" cols=\"40\" class=\"frankdlc-email-textarea\">dev-email@wpengine.local<\/textarea>\n                                                            <p class=\"description\">One email per line.<\/p>\n                                                        <\/div>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n\n                                    <!-- Advanced Panel -->\n                                    <div id=\"advanced\" class=\"frankdlc-tab-panel\">\n                                        <table class=\"form-table\">\n                                            <tbody>\n                                                <tr>\n                                                    <th scope=\"row\">Concurrent Requests<\/th>\n                                                    <td>\n                                                        <input type=\"number\" name=\"FRANKDLC_settings[concurrent_requests]\" value=\"3\" min=\"1\" max=\"10\">\n                                                        <p class=\"description\">Number of links to check simultaneously. Higher values are faster but may overload your server.<\/p>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <th scope=\"row\">User Agent<\/th>\n                                                    <td>\n                                                        <input type=\"text\" name=\"FRANKDLC_settings[user_agent]\" class=\"regular-text\" value=\"Mozilla\/5.0 (compatible; BrokenLinkChecker\/1.0.2; +https:\/\/wordpress.org\/)\">\n                                                        <p class=\"description\">User agent string sent with HTTP requests.<\/p>\n                                                        <br>\n                                                        <label><input type=\"checkbox\" name=\"FRANKDLC_settings[verify_ssl]\" value=\"1\" checked> Verify SSL certificates<\/label>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n\n                                    <!-- Tools Panel -->\n                                    <div id=\"tools\" class=\"frankdlc-tab-panel\">\n                                        <h2>\n                                            <span class=\"dashicons dashicons-update\"><\/span>\n                                            Reset & Maintenance Options\n                                        <\/h2>\n                                        <table class=\"widefat\">\n                                            <tbody>\n                                                <tr>\n                                                    <td><strong>Force Stop Scan<\/strong><\/td>\n                                                    <td>Forcefully stops all running\/pending scans, clears the scan queue, and resets the scan state. Use when a scan appears stuck.<\/td>\n                                                    <td>\n                                                        <button type=\"button\" class=\"button frankdlc-tool-btn\" id=\"frankdlc-force-stop-btn\" data-tooltip=\"Emergency Stop: Clear queue and reset scan engine if stuck.\">\n                                                            <span class=\"dashicons dashicons-dismiss\"><\/span> Force Stop\n                                                        <\/button>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <td><strong>Clear Scan History<\/strong><\/td>\n                                                    <td>Deletes all scan history records but keeps your link data intact.<\/td>\n                                                    <td>\n                                                        <button type=\"button\" class=\"button frankdlc-tool-btn\" id=\"frankdlc-clear-history-btn\" data-tooltip=\"Flush Logs: Erase all past scan records while keeping link database.\">\n                                                            <span class=\"dashicons dashicons-trash\"><\/span> Clear History\n                                                        <\/button>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <td><strong>Reset Settings<\/strong><\/td>\n                                                    <td>Resets all plugin settings to their default values without affecting link data or scan history.<\/td>\n                                                    <td>\n                                                        <button type=\"button\" class=\"button frankdlc-tool-btn\" id=\"frankdlc-reset-settings-btn\" data-tooltip=\"Restore Defaults: Revert all settings configurations to factory defaults.\">\n                                                            <span class=\"dashicons dashicons-undo\"><\/span> Reset Settings\n                                                        <\/button>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr>\n                                                    <td><strong>Cleanup Exports<\/strong><\/td>\n                                                    <td>Deletes all exported CSV\/JSON files from the uploads directory to free up disk space.<\/td>\n                                                    <td>\n                                                        <button type=\"button\" class=\"button frankdlc-tool-btn\" id=\"frankdlc-cleanup-exports-btn\" data-tooltip=\"Free Space: Delete all temporary export files from uploads folder.\">\n                                                            <span class=\"dashicons dashicons-trash\"><\/span> Cleanup Exports\n                                                        <\/button>\n                                                    <\/td>\n                                                <\/tr>\n                                                <tr class=\"frankdlc-danger-row\">\n                                                    <td><strong>Full Plugin Reset<\/strong><\/td>\n                                                    <td>Resets EVERYTHING \u2014 link data, scan history, settings, and export files \u2014 back to factory defaults. Use with caution!<\/td>\n                                                    <td>\n                                                        <button type=\"button\" class=\"button frankdlc-tool-btn\" id=\"frankdlc-full-reset-btn\" data-tooltip=\"Factory Reset: Wipe all links, history, settings, and files permanently.\">\n                                                            <span class=\"dashicons dashicons-warning\"><\/span> Full Reset\n                                                        <\/button>\n                                                    <\/td>\n                                                <\/tr>\n                                            <\/tbody>\n                                        <\/table>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                            \n                            <!-- Submit Row (Classes replaces inline style) -->\n                            <p class=\"submit frankdlc-settings-submit-row\">\n                                <input type=\"button\" id=\"frankdlc-save-settings-btn\" class=\"button button-primary\" value=\"Save Changes\">\n                            <\/p>\n                        <\/div>\n\n                        <!-- ================= SCAN HISTORY PANEL ================= -->\n                        <div id=\"frankdlc-panel-history\" class=\"frankdlc-panel\">\n                            <h1>Scan History<\/h1>\n                            <div class=\"frankdlc-settings-tabs frankdlc-history-tabs\">\n                                 <table class=\"frankdlc-links-table frankdlc-scan-history-table\" width=\"100%\">\n                                    <thead>\n                                        <tr>\n                                            <th>ID<\/th>\n                                            <th>Type<\/th>\n                                            <th>Status<\/th>\n                                            <th>Started<\/th>\n                                            <th>Completed<\/th>\n                                            <th>Links<\/th>\n                                            <th>Broken<\/th>\n                                        <\/tr>\n                                    <\/thead>\n                                    <tbody id=\"frankdlc-history-tbody\">\n                                        <!-- Rendered dynamically by JS -->\n                                    <\/tbody>\n                                <\/table>\n                            <\/div>\n                        <\/div>\n\n                        <!-- ================= HELP & GUIDE PANEL ================= -->\n                        <div id=\"frankdlc-panel-help\" class=\"frankdlc-panel\">\n                            <h1><span class=\"dashicons dashicons-editor-help frankdlc-title-icon\"><\/span>Help & Documentation<\/h1>\n                            \n                            <div class=\"frankdlc-help-container\">\n                                <!-- How Plugin Works -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-primary\">\n                                        <span class=\"dashicons dashicons-admin-generic frankdlc-icon-primary\"><\/span>\n                                        How Plugin Works?\n                                    <\/h2>\n                                    <p class=\"frankdlc-help-text\">\n                                        Frank Dead Link Checker scans your entire WordPress website to find broken links, redirects, and other link issues. It checks links inside posts, pages, menus, widgets, comments, custom fields, and even page builder content (Elementor, Divi, WPBakery, Gutenberg). Here is how it works:\n                                    <\/p>\n                                <\/div>\n\n                                <!-- Scanning Modes -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-search frankdlc-icon-success\"><\/span>\n                                        Scanning Modes\n                                    <\/h2>\n\n                                    <h3 class=\"frankdlc-help-section-subtitle\">1. Manual Scan (Scan Now)<\/h3>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        Click the \"Scan Now\" button on the Dashboard to start a full scan manually. The plugin will:\n                                    <\/p>\n                                    <ol class=\"frankdlc-help-list\">\n                                        <li>Discover all links from your selected content types (Posts, Pages, Menus, Widgets, Comments, Custom Fields).<\/li>\n                                        <li>Parse page builder content (Elementor, Divi, WPBakery, Gutenberg blocks) to find embedded links.<\/li>\n                                        <li>Check each link by sending HTTP HEAD\/GET requests to verify if the URL responds correctly.<\/li>\n                                        <li>Categorize links as Working (200 OK), Broken (4xx\/5xx errors), or Warning (redirects, slow responses).<\/li>\n                                        <li>Display results on the Dashboard with filters for easy review.<\/li>\n                                    <\/ol>\n\n                                    <h3 class=\"frankdlc-help-section-subtitle\">2. Automatic Scan (Scheduled)<\/h3>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        When Scan Type is set to \"Automatic\" in Settings, the plugin will automatically scan your website at the frequency you choose (Hourly, Twice Daily, Daily, or Weekly). This runs in the background using WordPress Cron \u2014 no manual action needed. Set Scan Type to \"Manual\" to disable automatic scanning entirely.\n                                    <\/p>\n\n                                    <h3 class=\"frankdlc-help-section-subtitle\">3. Auto-Recheck (Broken Links Only)<\/h3>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        A lightweight background task that automatically rechecks links already marked as broken or warning every 6 hours. This helps detect when a previously broken link has been fixed \u2014 without running a full scan. It checks up to 50 links at a time and skips dismissed links.\n                                    <\/p>\n\n                                    <h3 class=\"frankdlc-help-section-subtitle\">4. Fresh Scan<\/h3>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        Use the \"Fresh Scan\" button to clear ALL existing link data and scan history, then start a completely new scan from scratch. This is useful when you want a clean slate \u2014 for example, after making major changes to your website structure.\n                                    <\/p>\n                                <\/div>\n\n                                <!-- Post Type Statistics & Link Audits -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-chart-bar frankdlc-icon-primary\"><\/span>\n                                        Post Type Statistics & Link Audits (v3.1.4)\n                                    <\/h2>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        Version 3.1.4 introduces powerful visual and analytical tools to break down your website's links by content type and audit individual posts, pages, custom post types, menus, attachments, or comments:\n                                    <\/p>\n                                    <ul class=\"frankdlc-help-list\">\n                                        <li><strong>Post Type Stats Page:<\/strong> Go to Link Checker \u2192 Post Type Stats to view a clean breakdown of total, internal, external, and broken links aggregated by each individual post type (including Pages, Posts, Attachments, Navigation Menus, Widgets, Comments, ACF Custom Fields, and registered Custom Post Types).<\/li>\n                                        <li><strong>Individual Item Details:<\/strong> Click \"View Items\" next to any post type to drill down into a paginated list of all posts or items of that type. You can search by title to find specific items and view their respective link counts.<\/li>\n                                        <li><strong>Dashboard Redirection & Filter Notices:<\/strong> Clicking \"View Links\" on any individual item redirects you to the main Dashboard, automatically filtering the links list to display only that item's links. A clear notice banner is shown at the top with a quick \"Clear Filter\" button.<\/li>\n                                        <li><strong>Source Column Metadata:<\/strong> The \"Source\" column in the dashboard and stats detail tables now displays the item's Creation and Modification dates for better context.<\/li>\n                                        <li><strong>Attachments Scanning:<\/strong> You can now scan links inside media attachments (descriptions and captions) by enabling \"Attachments\" in Settings \u2192 Scan Scope.<\/li>\n                                        <li><strong>Performance Optimizations:<\/strong> Database queries are optimized using new MySQL indexes on source columns and transient caching, preventing admin area slowdowns.<\/li>\n                                    <\/ul>\n                                <\/div>\n\n                                <!-- What If a Scan Gets Stuck? -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-warning frankdlc-icon-warning\"><\/span>\n                                        What If a Scan Gets Stuck?\n                                    <\/h2>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        Sometimes a scan may appear stuck due to slow server responses, timeout issues, or server restarts. Here is what the plugin does to handle this:\n                                    <\/p>\n                                    <ul class=\"frankdlc-help-list\">\n                                        <li><strong>Stop Scan Button:<\/strong> Click \"Stop Scan\" on the Dashboard to gracefully stop a running scan.<\/li>\n                                        <li><strong>Force Stop:<\/strong> If the Stop button does not work, use \"Force Stop\" from the Dashboard Tools section. This forcefully cancels all running scans, clears the scan queue, and resets the scan state.<\/li>\n                                        <li><strong>Auto-Recovery:<\/strong> The plugin automatically detects scans that have been running for over 30 minutes without progress and marks them as \"timed out\". This prevents stuck scans from blocking new ones.<\/li>\n                                    <\/ul>\n                                <\/div>\n\n                                <!-- Settings Explained -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-admin-settings frankdlc-icon-info\"><\/span>\n                                        Settings Explained\n                                    <\/h2>\n\n                                    <h3 class=\"frankdlc-help-subheader-blue\">General Tab<\/h3>\n                                    <table class=\"widefat frankdlc-help-table-margin\">\n                                        <tr><td class=\"frankdlc-col-width-180\"><strong>Scan Type<\/strong><\/td>\n                                            <td>Choose \"Manual\" (scan only when you click the button) or \"Automatic\" (scan runs on a schedule automatically).<\/td><\/tr>\n                                        <tr><td><strong>Scan Frequency<\/strong><\/td>\n                                            <td>How often automatic scans run: Hourly, Twice Daily, Daily, or Weekly. Only applies when Scan Type is \"Automatic\".<\/td><\/tr>\n                                        <tr><td><strong>Request Timeout<\/strong><\/td>\n                                            <td>Maximum time (in seconds) to wait for a URL response before marking it as timed out. Default: 30 seconds. Range: 5\u2013120 seconds.<\/td><\/tr>\n                                    <\/table>\n\n                                    <h3 class=\"frankdlc-help-subheader-blue\">Scan Scope Tab<\/h3>\n                                    <table class=\"widefat frankdlc-help-table-margin\">\n                                        <tr><td class=\"frankdlc-col-width-180\"><strong>Content Types<\/strong><\/td>\n                                            <td>Select which content types to scan: Posts, Pages, Attachments, Comments, Widgets, Menus, Custom Fields, and Custom Post Types (if any registered).<\/td><\/tr>\n                                        <tr><td><strong>Link Types<\/strong><\/td>\n                                            <td>Choose to check Internal Links (your own site), External Links (other websites), and\/or Image URLs.<\/td><\/tr>\n                                    <\/table>\n\n                                    <h3 class=\"frankdlc-help-subheader-blue\">Exclusions Tab<\/h3>\n                                    <table class=\"widefat frankdlc-help-table-margin\">\n                                        <tr><td class=\"frankdlc-col-width-180\"><strong>Excluded Domains<\/strong><\/td>\n                                            <td>Enter domain names (one per line) that should be skipped during scanning. For example: facebook.com, twitter.com. Links to these domains will not be checked.<\/td><\/tr>\n                                    <\/table>\n\n                                    <h3 class=\"frankdlc-help-subheader-blue\">Notifications Tab<\/h3>\n                                    <table class=\"widefat frankdlc-help-table-margin\">\n                                        <tr><td class=\"frankdlc-col-width-180\"><strong>Email Notifications<\/strong><\/td>\n                                            <td>Enable to receive email alerts when broken links are found.<\/td><\/tr>\n                                        <tr><td><strong>Email Frequency<\/strong><\/td>\n                                            <td>How often to send notification emails: Immediately, Daily, or Weekly digest.<\/td><\/tr>\n                                        <tr><td><strong>Recipients<\/strong><\/td>\n                                            <td>Email addresses to receive notifications (one per line). Defaults to the admin email.<\/td><\/tr>\n                                    <\/table>\n\n                                    <h3 class=\"frankdlc-help-subheader-blue\">Advanced Tab<\/h3>\n                                    <table class=\"widefat frankdlc-help-table-margin\">\n                                        <tr><td class=\"frankdlc-col-width-180\"><strong>Concurrent Requests<\/strong><\/td>\n                                            <td>Number of links to check simultaneously (1\u201310). Higher values speed up scanning but use more server resources. Default: 3.<\/td><\/tr>\n                                        <tr><td><strong>Delay Between Requests<\/strong><\/td>\n                                            <td>Milliseconds to wait between checking each link (0\u20135000). Helps prevent overloading your server or getting rate-limited by external sites. Default: 500ms.<\/td><\/tr>\n                                        <tr><td><strong>User Agent<\/strong><\/td>\n                                            <td>The User-Agent string sent with HTTP requests. Some websites may block requests from unknown user agents. The default mimics a standard browser.<\/td><\/tr>\n                                        <tr><td><strong>Verify SSL<\/strong><\/td>\n                                            <td>When enabled, the plugin verifies SSL certificates. Disable only if you are experiencing SSL-related false positives.<\/td><\/tr>\n                                        <tr><td><strong>Auto Cleanup<\/strong><\/td>\n                                            <td>Automatically delete old scan history records after a specified number of days. Default: 90 days.<\/td><\/tr>\n                                    <\/table>\n                                <\/div>\n\n                                <!-- Understanding Link Status -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-info frankdlc-icon-info\"><\/span>\n                                        Understanding Link Status\n                                    <\/h2>\n                                    <table class=\"widefat frankdlc-help-table-top-margin\">\n                                        <tr>\n                                            <td class=\"frankdlc-col-width-130\"><span class=\"frankdlc-dot-broken\">\u25cf<\/span>\n                                                <strong>Broken<\/strong><\/td>\n                                            <td>HTTP 4xx or 5xx error. The link is dead or the server returned an error. Common codes: 404 (Not Found), 403 (Forbidden), 500 (Server Error).<\/td>\n                                        <\/tr>\n                                        <tr>\n                                            <td><span class=\"frankdlc-dot-warning\">\u25cf<\/span>\n                                                <strong>Warning<\/strong><\/td>\n                                            <td>The link works but has issues: it redirects (301\/302), responds slowly (over 5 seconds), or returned a suspicious status code. Review these to decide if action is needed.<\/td>\n                                        <\/tr>\n                                        <tr>\n                                            <td><span class=\"frankdlc-dot-working\">\u25cf<\/span>\n                                                <strong>Working<\/strong><\/td>\n                                            <td>HTTP 200 OK. The link is working perfectly \u2014 no action needed.<\/td>\n                                        <\/tr>\n                                        <tr>\n                                            <td><span class=\"frankdlc-dot-dismissed\">\u25cf<\/span>\n                                                <strong>Dismissed<\/strong><\/td>\n                                            <td>Manually ignored by admin. These links are excluded from broken\/warning counts and are not rechecked automatically.<\/td>\n                                        <\/tr>\n                                    <\/table>\n\n                                    <h3 id=\"frankdlc-http-status-codes\" class=\"frankdlc-help-section-subtitle\">Common HTTP Status Codes<\/h3>\n                                    <table class=\"widefat\">\n                                        <tr><td class=\"frankdlc-col-width-80\"><strong>200<\/strong><\/td><td>OK \u2014 Link is working.<\/td><\/tr>\n                                        <tr><td><strong>301<\/strong><\/td><td>Moved Permanently \u2014 The URL has been permanently redirected to a new location.<\/td><\/tr>\n                                        <tr><td><strong>302<\/strong><\/td><td>Found \u2014 Temporary redirect. The URL is temporarily pointing elsewhere.<\/td><\/tr>\n                                        <tr><td><strong>401<\/strong><\/td><td>Unauthorized \u2014 Authentication is required. The server needs valid credentials to access this URL.<\/td><\/tr>\n                                        <tr><td><strong>403<\/strong><\/td><td>Forbidden \u2014 Access denied. The server refuses to serve this URL.<\/td><\/tr>\n                                        <tr><td><strong>404<\/strong><\/td><td>Not Found \u2014 The page does not exist. This is the most common broken link.<\/td><\/tr>\n                                        <tr><td><strong>405<\/strong><\/td><td>Method Not Allowed \u2014 The HTTP method used is not supported by this URL.<\/td><\/tr>\n                                        <tr><td><strong>406<\/strong><\/td><td>Not Acceptable \u2014 The server cannot produce a response matching the request headers.<\/td><\/tr>\n                                        <tr><td><strong>410<\/strong><\/td><td>Gone \u2014 The page has been permanently removed. Unlike 404, the server knows it was intentionally deleted.<\/td><\/tr>\n                                        <tr><td><strong>429<\/strong><\/td><td>Too Many Requests \u2014 Rate limit exceeded. The server is blocking requests due to too many in a short time.<\/td><\/tr>\n                                        <tr><td><strong>500<\/strong><\/td><td>Server Error \u2014 Something went wrong on the target server.<\/td><\/tr>\n                                        <tr><td><strong>503<\/strong><\/td><td>Service Unavailable \u2014 The server is temporarily down, often for maintenance.<\/td><\/tr>\n                                        <tr><td><strong>Timeout<\/strong><\/td><td>No response \u2014 The server did not respond within the configured timeout period.<\/td><\/tr>\n                                        <tr><td><strong>DNS Error<\/strong><\/td><td>Domain does not exist \u2014 The domain name could not be resolved.<\/td><\/tr>\n                                        <tr><td><strong>SSL Error<\/strong><\/td><td>SSL certificate issue \u2014 The website has an invalid or expired SSL certificate.<\/td><\/tr>\n                                        <tr><td><strong>Error<\/strong><\/td><td>Connection Error \u2014 A generic error occurred while trying to reach the URL (e.g., connection refused, reset, or unknown failure).<\/td><\/tr>\n                                    <\/table>\n                                <\/div>\n\n                                <!-- Tips & Best Practices -->\n                                <div class=\"frankdlc-card frankdlc-tips-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-lightbulb frankdlc-icon-purple\"><\/span>\n                                        Tips & Best Practices\n                                    <\/h2>\n                                    <ul class=\"frankdlc-help-list\">\n                                        <li><strong>Start with a Manual Scan:<\/strong> Run your first scan manually to see how long it takes on your site before enabling automatic scanning.<\/li>\n                                        <li><strong>Adjust Concurrent Requests:<\/strong> If your server is slow or shared hosting, reduce concurrent requests to 1\u20132. For dedicated servers, you can increase to 5\u201310.<\/li>\n                                        <li><strong>Use Exclusions:<\/strong> Add domains that frequently block automated checks (like social media sites) to your exclusion list to reduce false positives.<\/li>\n                                        <li><strong>Review Warnings:<\/strong> Warning links (redirects) are not broken, but you may want to update them to point directly to the final URL for better SEO.<\/li>\n                                        <li><strong>Export Regularly:<\/strong> Export your broken link reports as CSV for record-keeping or to share with your team.<\/li>\n                                        <li><strong>Use Bulk Actions:<\/strong> Select multiple links with checkboxes and use bulk Dismiss, Delete, or Recheck to manage them efficiently.<\/li>\n                                    <\/ul>\n                                <\/div>\n\n                                <!-- How to Translate This Plugin -->\n                                <div class=\"frankdlc-card\">\n                                    <h2 class=\"frankdlc-card-title-standard\">\n                                        <span class=\"dashicons dashicons-translation frankdlc-icon-cyan\"><\/span>\n                                        How to Translate This Plugin\n                                    <\/h2>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        Frank Dead Link Checker is fully translation-ready. You can translate it into your language using Poedit or Loco Translate.\n                                    <\/p>\n\n                                    <h3 class=\"frankdlc-help-subheader-cyan frankdlc-mt-0\">\n                                        Method 1: Using Loco Translate Plugin (Recommended)\n                                    <\/h3>\n                                    <ol class=\"frankdlc-help-list\">\n                                        <li>Install and activate the <strong>Loco Translate<\/strong> plugin from the WordPress plugin repository.<\/li>\n                                        <li>Go to <strong>Loco Translate \u2192 Plugins<\/strong> in your WordPress admin menu.<\/li>\n                                        <li>Find \"Frank Dead Link Checker\" in the list and click on it.<\/li>\n                                        <li>Click \"New Language\" and select your desired language.<\/li>\n                                        <li>Translate the strings one by one using the visual editor.<\/li>\n                                        <li>Click \"Save\" when done. Your translations will take effect immediately.<\/li>\n                                    <\/ol>\n\n                                    <h3 class=\"frankdlc-help-subheader-cyan\">\n                                        Method 2: Using Poedit (Manual PO\/MO Files)\n                                    <\/h3>\n                                    <ol class=\"frankdlc-help-list\">\n                                        <li>Download and install <strong>Poedit<\/strong> on your computer (free desktop application).<\/li>\n                                        <li>Open the POT template file located at: <code>wp-content\/plugins\/dead-link-checker-pro\/languages\/dead-link-checker.pot<\/code><\/li>\n                                        <li>In Poedit, go to \"Create New Translation\" and select your language.<\/li>\n                                        <li>Translate each string, then save the file.<\/li>\n                                        <li>Poedit will generate two files (e.g., <code>dead-link-checker-fr_FR.po<\/code> and <code>dead-link-checker-fr_FR.mo<\/code>). Upload both to: <code>wp-content\/languages\/plugins\/<\/code><\/li>\n                                    <\/ol>\n\n                                    <h3 class=\"frankdlc-help-subheader-cyan\">\n                                        Method 3: Contribute on translate.wordpress.org\n                                    <\/h3>\n                                    <p class=\"frankdlc-help-text-standard\">\n                                        You can also contribute translations to the official WordPress translation platform. Your translations will be available to all users of this plugin who speak your language.\n                                    <\/p>\n                                    <a href=\"https:\/\/translate.wordpress.org\/\" target=\"_blank\" class=\"frankdlc-btn-cyan\" rel=\"noopener\">\n                                        Visit translate.wordpress.org\n                                    <\/a>\n\n                                    <div class=\"frankdlc-help-note\">\n                                        <strong>Note:<\/strong>\n                                        After translating, make sure your WordPress site language is set to your target language. Go to Settings \u2192 General \u2192 Site Language and select your language. The plugin will automatically load the matching translation file.\n                                    <\/div>\n                                <\/div>\n\n                                <!-- Support Box -->\n                                <div class=\"frankdlc-card frankdlc-support-card\">\n                                    <h2>\n                                        <span class=\"dashicons dashicons-sos\"><\/span>\n                                        Need Help?\n                                    <\/h2>\n                                    <p>If you have questions or need support, please visit:<\/p>\n                                    <a href=\"https:\/\/wordpress.org\/support\/\" target=\"_blank\" class=\"frankdlc-support-button\" rel=\"noopener\">\n                                        WordPress Support Forums\n                                    <\/a>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                    <\/div>\n                <\/main>\n            <\/div>\n        <\/div>\n\n        <!-- Inline Edit Link Dialog Modal (WordPress Admin-Style) -->\n        <div id=\"frankdlc-edit-modal\" class=\"frankdlc-modal frankdlc-hidden\">\n            <div class=\"frankdlc-modal-content\">\n                <div class=\"frankdlc-modal-header\">\n                    <h3>Edit Link<\/h3>\n                    <button type=\"button\" id=\"frankdlc-modal-close\" class=\"frankdlc-modal-close\">&times;<\/button>\n                <\/div>\n                <div class=\"frankdlc-modal-body\">\n                    <input type=\"hidden\" id=\"frankdlc-edit-link-id\">\n                    <div class=\"frankdlc-modal-form-group\">\n                        <label>Link URL<\/label>\n                        <input type=\"text\" id=\"frankdlc-edit-url\">\n                    <\/div>\n                    <div>\n                        <label>Anchor Text<\/label>\n                        <input type=\"text\" id=\"frankdlc-edit-anchor\">\n                    <\/div>\n                <\/div>\n                <div class=\"frankdlc-modal-footer\">\n                    <button type=\"button\" id=\"frankdlc-modal-cancel\" class=\"button\">Cancel<\/button>\n                    <button type=\"button\" id=\"frankdlc-modal-save\" class=\"button button-primary\">Update Link<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Floating Toast Message (Standard WP Admin style alert) -->\n        <div id=\"frankdlc-toast\" class=\"frankdlc-toast frankdlc-hidden\"><\/div>\n        \n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons has-custom-font-size has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/awplife.com\/account\/signup\/dead-link-checker-pro\" target=\"_blank\" rel=\"noreferrer noopener\">Buy Dead Link Checker Pro $25<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>NOTE This simulator allows you to test out Dead Link Checker Pro in real-time.Please be aware that the final product&#8217;s design and functionality will differ from what you see in this demo.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"full-width-page.php","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":14,"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":21,"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/pages\/2\/revisions\/21"}],"wp:attachment":[{"href":"https:\/\/awplife.com\/demo\/dead-link-checker-pro\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}