Skip to content
← Back to Snippets
Code

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']);