Internal Link Opportunity Map
Maps source pages to relevant internal-link opportunities by matching page topics to target slugs.
Purpose
Maps source pages to relevant internal-link opportunities by matching page topics to target slugs.
Snippet details
ContextSeoLevelAdvancedCopy-and-paste statusMarked safe after review.Categories
- Security
Code
<?php
/*
* Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
* Free for personal and internal use. Paid project use requires visible credit
* to Jeffery L. Paris. Corporate use requires a paid license fee unless a
* separate written license states otherwise.
*/
/**
* Internal Link Opportunity Map.
*
* Purpose:
* Maps source pages to relevant internal-link opportunities by matching page topics to target slugs.
*
* @param array $source_pages Source pages with slug and topics.
* @param array $target_pages Target pages with slug, title, and topics.
* @return array Suggested internal link map.
*/
function ogSnippetInternalLinkOpportunityMap(array $source_pages, array $target_pages): array {
$link_map = array();
foreach ($source_pages as $source_page) {
$source_slug = (string) $source_page['slug'];
$source_topics = array();
if (isset($source_page['topics']) && is_array($source_page['topics'])) {
$source_topics = $source_page['topics'];
}
$link_map[$source_slug] = array();
foreach ($target_pages as $target_page) {
$target_slug = (string) $target_page['slug'];
if ($target_slug === $source_slug) {
continue;
}
$target_topics = array();
if (isset($target_page['topics']) && is_array($target_page['topics'])) {
$target_topics = $target_page['topics'];
}
$shared_topics = array_intersect($source_topics, $target_topics);
if (count($shared_topics) > 0) {
$link_map[$source_slug][] = array(
'target_slug' => $target_slug,
'target_title' => (string) $target_page['title'],
'shared_topics' => array_values($shared_topics)
);
}
}
}
return $link_map;
}
$source_pages = array(array('slug' => 'gate-diagnostics', 'topics' => array('security', 'routing')));
$target_pages = array(array('slug' => 'iris-lockdown', 'title' => 'Iris Lockdown', 'topics' => array('security')));
$link_map = ogSnippetInternalLinkOpportunityMap($source_pages, $target_pages);
echo count($link_map['gate-diagnostics']);