﻿{"id":175,"date":"2026-03-05T09:43:44","date_gmt":"2026-03-05T08:43:44","guid":{"rendered":"https:\/\/baqueiro.es\/store\/?post_type=bdw_plugin_doc&#038;p=175"},"modified":"2026-03-05T17:32:26","modified_gmt":"2026-03-05T16:32:26","slug":"b-easy-internal-seo-links","status":"publish","type":"bdw_plugin_doc","link":"https:\/\/baqueiro.es\/store\/plugin-docs\/b-easy-internal-seo-links\/","title":{"rendered":"[B] Easy Internal SEO Links"},"content":{"rendered":"\n<h2>Requirements<\/h2>\n<ul>\n  <li>WordPress 5.8 or higher<\/li>\n  <li>PHP 8.1 or higher<\/li>\n  <li>Capability: <code>manage_options<\/code> to access settings (Administrator)<\/li>\n<\/ul><br>\n\n<h2>Installation<\/h2>\n<ol>\n  <li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin.<\/li>\n  <li>Click <strong>Upload Plugin<\/strong> and select the <code>.zip<\/code> file.<\/li>\n  <li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol><br>\n\n<h2>Initial Setup<\/h2>\n<p>On first activation, the plugin:<\/p>\n<ul>\n  <li>Creates default options in <strong>Settings<\/strong>.<\/li>\n  <li>Creates database tables for click statistics and keyword index (<code>wp_bdw_eisl_*<\/code>).<\/li>\n<\/ul>\n<p>You can start using the plugin immediately by adding rules in <strong>Settings \u2192 Easy Internal SEO Links<\/strong>.\n<\/p><br>\n\n<h2>Configuration<\/h2>\n<p>Go to <strong>Settings \u2192 Easy Internal SEO Links<\/strong>. Two tabs are available: <strong>Settings<\/strong> and\n  <strong>Link Rules<\/strong>.<\/p><br>\n\n<h2>Settings Tab<\/h2>\n<ul>\n  <li><strong>Max links per post:<\/strong> Maximum internal links created per post (0 = unlimited). Recommended: 5-15.\n  <\/li>\n  <li><strong>Max links per keyword (per post):<\/strong> How many times each keyword can be linked in the same post.\n    Recommended: 1 to avoid repetition.<\/li>\n  <li><strong>Open links in a new tab:<\/strong> Adds <code>target='_blank'<\/code> and\n    <code>rel='noopener noreferrer'<\/code>.<\/li>\n  <li><strong>Add rel=&#8217;nofollow&#8217;:<\/strong> Adds nofollow to generated links. Usually <strong>not recommended<\/strong>\n    for internal links.<\/li>\n  <li><strong>Apply on post content:<\/strong> Enables auto-linking in <code>the_content<\/code>. Recommended:\n    <strong>Yes<\/strong>.<\/li>\n  <li><strong>Apply on post excerpts:<\/strong> Enables auto-linking in excerpts.<\/li>\n  <li><strong>Respect existing links:<\/strong> Does not modify text already inside <code>&lt;a&gt;<\/code> tags.\n    Recommended: <strong>Yes<\/strong>.<\/li>\n  <li><strong>Cleanup data on uninstall:<\/strong> Removes all plugin options and tables when uninstalled.<\/li>\n<\/ul><br>\n\n<h2>Link Rules Tab<\/h2>\n<p>Define rules like: &#8216;When keyword <strong>X<\/strong> appears in content, link to post\/URL <strong>Y<\/strong>&#8216;.<\/p>\n<ul>\n  <li><strong>Keyword:<\/strong> Text to be converted to a link (e.g., &#8216;wordpress seo&#8217;).<\/li>\n  <li><strong>Target type:<\/strong> Post\/Page ID or Custom URL.<\/li>\n  <li><strong>Target post ID \/ Target URL:<\/strong> The destination for the link.<\/li>\n  <li><strong>Case sensitive:<\/strong> Match exact case.<\/li>\n  <li><strong>Match whole words only:<\/strong> Recommended to avoid partial matches.<\/li>\n  <li><strong>Max links per post (for this keyword):<\/strong> Specific limit for this rule (0 = use global).<\/li>\n<\/ul>\n<p>Click <strong>Add rule<\/strong> to save. Rules appear in the <strong>Existing rules<\/strong> table.<\/p><br>\n\n<h2>Advanced Settings<\/h2>\n<p>Go to <strong>Settings \u2192 Easy Internal SEO Links Advanced<\/strong>.<\/p>\n<ul>\n  <li><strong>Post blacklist (IDs):<\/strong> Comma-separated IDs. These posts are excluded from auto-linking (both as\n    source and destination).<\/li>\n  <li><strong>Term blacklist (IDs):<\/strong> Comma-separated category\/tag IDs. Content with these terms is excluded.\n  <\/li>\n  <li><strong>Post type limits:<\/strong> Enable\/disable auto-linking per content type (post, page, etc.) and set\n    specific limits.<\/li>\n<\/ul><br>\n\n<h2>Keywords per Post (Meta Box)<\/h2>\n<p>When editing a post or page, use the <strong>Internal SEO Keywords<\/strong> meta box in the sidebar.<\/p>\n<ul>\n  <li>Add one keyword per line.<\/li>\n  <li>These keywords create links <strong>to this post<\/strong> when they appear in other content.<\/li>\n  <li>This creates an automatic similarity index between your posts.<\/li>\n<\/ul>\n<p>The <strong>Internal SEO Keywords<\/strong> column in the posts list shows how many keywords each post has.<\/p><br>\n\n<h2>Click Statistics<\/h2>\n<p>Go to <strong>Settings \u2192 Easy Internal SEO Links Stats<\/strong> to view:<\/p>\n<ul>\n  <li><strong>Total tracked internal link clicks:<\/strong> All clicks on plugin-generated links.<\/li>\n  <li><strong>Top target posts:<\/strong> Most clicked destinations.<\/li>\n  <li><strong>Top source posts:<\/strong> Posts where most clicks originate.<\/li>\n<\/ul>\n<p>Tracking uses JavaScript on singular pages with AJAX and nonce verification. Only internal links are counted.<\/p><br>\n\n<h2>Creating a Manual Rule<\/h2>\n<ol>\n  <li>Go to <strong>Settings \u2192 Easy Internal SEO Links<\/strong> \u2192 <strong>Link Rules<\/strong> tab.<\/li>\n  <li>Fill in the <strong>Keyword<\/strong> (e.g., &#8216;seo guide&#8217;).<\/li>\n  <li>Select <strong>Target type<\/strong> = Post\/Page ID.<\/li>\n  <li>Enter the <strong>Target post ID<\/strong>.<\/li>\n  <li>Configure matching options (case sensitive, whole words).<\/li>\n  <li>Click <strong>Add rule<\/strong>.<\/li>\n  <li>Create or edit a post containing that keyword.<\/li>\n  <li>View the post on frontend: the keyword should appear as a link.<\/li>\n<\/ol><br>\n\n<h2>Using Keywords Index (Similarity)<\/h2>\n<ol>\n  <li>Edit the <strong>destination post<\/strong> (where you want links to point).<\/li>\n  <li>In the <strong>Internal SEO Keywords<\/strong> meta box, add keywords (one per line).<\/li>\n  <li>Save the post.<\/li>\n  <li>In another post, write content containing those keywords.<\/li>\n  <li>On frontend, occurrences will link to the destination post automatically.<\/li>\n<\/ol><br>\n\n<h2>Roles &amp; Permissions<\/h2>\n<ul>\n  <li><strong>Administrators (<code>manage_options<\/code>):<\/strong> Access to all settings, link rules, advanced\n    settings, and statistics.<\/li>\n  <li><strong>Editors\/Authors (<code>edit_post<\/code>):<\/strong> Can edit the Internal SEO Keywords meta box on their\n    posts.<\/li>\n  <li><strong>Visitors:<\/strong> Click tracking works via AJAX (protected by nonce).<\/li>\n<\/ul><br>\n\n<h2>Troubleshooting<\/h2>\n\n<h2>Links not appearing in content<\/h2>\n<p><strong>Cause:<\/strong> Auto-linking is disabled or post is excluded.<\/p>\n<p><strong>Solution:<\/strong> Verify &#8216;Apply on post content&#8217; is enabled in Settings. Check if the post type is enabled\n  in Advanced Settings. Ensure the post is not in the blacklist. Clear any page cache after changing settings.<\/p><br>\n\n<h2>Rule not creating links<\/h2>\n<p><strong>Cause:<\/strong> Limits exceeded or keyword mismatch.<\/p>\n<p><strong>Solution:<\/strong> Check &#8216;Max links per post&#8217; and &#8216;Max links per keyword&#8217; limits. Verify the keyword matches\n  exactly (case sensitive \/ whole word options). If &#8216;Respect existing links&#8217; is active, text inside existing links won&#8217;t\n  be modified.<\/p><br>\n\n<h2>Statistics not updating<\/h2>\n<p><strong>Cause:<\/strong> Tracking script not loaded or link not internal.<\/p>\n<p><strong>Solution:<\/strong> The tracking script only loads on singular pages. Verify the clicked link is internal\n  (same domain) and was generated by the plugin. Check browser console (F12) for JavaScript errors.<\/p><br>\n\n<h2>Data remains after uninstall<\/h2>\n<p><strong>Cause:<\/strong> &#8216;Cleanup data on uninstall&#8217; is disabled.<\/p>\n<p><strong>Solution:<\/strong> Enable this option, save settings, then uninstall the plugin. Or manually remove\n  <code>bdw_eisl_*<\/code> options and <code>*_bdw_eisl_*<\/code> tables from the database.<\/p><br>\n\n<h2>Links appearing in wrong places<\/h2>\n<p><strong>Cause:<\/strong> &#8216;Match whole words only&#8217; is disabled.<\/p>\n<p><strong>Solution:<\/strong> Enable &#8216;Match whole words only&#8217; for the rule to prevent partial word matches.<\/p><br>\n\n<h2>Privacy &amp; Data<\/h2>\n<p>This plugin:<\/p>\n<ul>\n  <li>Stores link rules and settings in the local database only.<\/li>\n  <li>Click statistics store post IDs and anchor text (up to 255 characters) for internal reports.<\/li>\n  <li>Does <strong>not<\/strong> send personal data to third parties.<\/li>\n  <li>Does <strong>not<\/strong> set any cookies.<\/li>\n  <li>Does <strong>not<\/strong> make external HTTP requests.<\/li>\n<\/ul>\n<p>Enable &#8216;Cleanup data on uninstall&#8217; to remove all data when the plugin is deleted.<\/p><br>\n\n<h2>Uninstallation<\/h2>\n<p>To remove the plugin:<\/p>\n<ol>\n  <li>Go to <strong>Settings \u2192 Easy Internal SEO Links<\/strong>.<\/li>\n  <li>Enable <strong>Cleanup data on uninstall<\/strong> if you want to remove all data.<\/li>\n  <li>Save settings.<\/li>\n  <li>Deactivate the plugin.<\/li>\n  <li>Delete it from <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<\/ol>\n<p><strong>Note:<\/strong> If cleanup is disabled, options and database tables will remain for future use.<\/p><br>\n","protected":false},"excerpt":{"rendered":"<p>Requirements WordPress 5.8 or higher PHP 8.1 or higher Capability: manage_options to access settings (Administrator) Installation Go to Plugins \u2192 Add New in your WordPress admin. Click Upload Plugin and select the .zip file. Click Install Now, then Activate. Initial Setup On first activation, the plugin: Creates default options in Settings. Creates database tables for [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","class_list":["post-175","bdw_plugin_doc","type-bdw_plugin_doc","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/bdw_plugin_doc\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/bdw_plugin_doc"}],"about":[{"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/types\/bdw_plugin_doc"}],"version-history":[{"count":2,"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/bdw_plugin_doc\/175\/revisions"}],"predecessor-version":[{"id":303,"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/bdw_plugin_doc\/175\/revisions\/303"}],"wp:attachment":[{"href":"https:\/\/baqueiro.es\/store\/wp-json\/wp\/v2\/media?parent=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}