get_var("SELECT COUNT(*) FROM {$wpdb->prefix}igny8_keywords"); $unmapped_keywords = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}igny8_keywords WHERE cluster_id IS NULL OR cluster_id = 0"); $clusters_count = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}igny8_clusters"); $ideas_count = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}igny8_content_ideas"); $queued_ideas = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}igny8_content_ideas WHERE status = 'new'"); // Check sector selection $sector_selected = !empty(igny8_get_saved_sector_selection()); return [ 'keywords' => [ 'count' => $keywords_count, 'unmapped' => $unmapped_keywords, 'status' => $keywords_count > 0 ? 'completed' : 'pending' ], 'sector' => [ 'selected' => $sector_selected, 'status' => $sector_selected ? 'completed' : 'current' ], 'clusters' => [ 'count' => $clusters_count, 'unmapped_keywords' => $unmapped_keywords, 'status' => $unmapped_keywords == 0 && $clusters_count > 0 ? 'completed' : ($unmapped_keywords > 0 ? 'current' : 'pending') ], 'ideas' => [ 'count' => $ideas_count, 'status' => $ideas_count > 0 ? 'completed' : 'pending' ], 'queue' => [ 'queued_ideas' => $queued_ideas, 'status' => $queued_ideas == 0 && $ideas_count > 0 ? 'completed' : ($queued_ideas > 0 ? 'current' : 'pending') ] ]; } // Handle URL parameters for subpages $subpage = $_GET['sm'] ?? 'home'; $GLOBALS['current_submodule'] = $subpage; $GLOBALS['current_module'] = 'planner'; // Start output buffering ob_start(); switch ($subpage) { case 'keywords': include plugin_dir_path(__FILE__) . 'keywords.php'; break; case 'clusters': include plugin_dir_path(__FILE__) . 'clusters.php'; break; case 'ideas': include plugin_dir_path(__FILE__) . 'ideas.php'; break; case 'home': default: // Home dashboard content ?>
Please select a Sector to continue. Sector selection is required to start AI-based workflows.
0 ? round(($mapped_keywords / $total_keywords) * 100) : 0; $clusters_ideas_pct = $total_clusters > 0 ? round(($clusters_with_ideas / $total_clusters) * 100) : 0; $ideas_queued_pct = $total_ideas > 0 ? round(($queued_ideas / $total_ideas) * 100) : 0; // Use fixed colors matching top metric cards $keyword_color = 'blue'; // Keywords Ready card is blue $cluster_color = 'green'; // Clusters Built card is green $idea_color = 'amber'; // Ideas Generated card is amber ?>
Keywords Ready Research, analyze, and manage keywords strategy
Clusters Built Organize keywords into strategic topical clusters
Ideas Generated Generate creative content ideas based on semantic strategy

Planner Workflow Steps

Track your planning progress

1
Add Keywords
0): ?> keywords added No keywords yet
2
Select Sector
Sector configured Required for AI workflows
3
Auto Cluster
0): ?> unmapped keywords 0): ?> clusters created No clusters yet
4
Generate Ideas
0): ?> ideas generated No ideas yet
0): ?>

Workflow Status & AI Settings

Workflow Status & AI Settings

Manual AI Mode

Workflow Status & AI Settings

Workflow Status & AI Settings

Progress & Readiness Summary

Planning workflow progress tracking

Keyword Mapping %
of keywords mapped
Clusters With Ideas %
of clusters have ideas
Ideas Queued to Writer %
of ideas queued

Top 5 Clusters by Volume

Highest volume keyword clusters

get_results(" SELECT c.cluster_name, c.total_volume, c.keyword_count FROM {$wpdb->prefix}igny8_clusters c WHERE c.status = 'active' AND c.total_volume > 0 ORDER BY c.total_volume DESC LIMIT 5 "); if ($top_clusters): $max_volume = $top_clusters[0]->total_volume; // Highest volume for percentage calculation $color_classes = ['igny8-progress-blue', 'igny8-progress-green', 'igny8-progress-amber', 'igny8-progress-purple', 'igny8-progress-text-dim']; ?>
$cluster): $percentage = $max_volume > 0 ? round(($cluster->total_volume / $max_volume) * 100) : 0; $color_class = $color_classes[$index % 5]; ?>
cluster_name); ?>
total_volume); ?>
%

No clusters found yet

View Clusters

Ideas by Status

Content ideas workflow status

get_results(" SELECT status, COUNT(*) as count FROM {$wpdb->prefix}igny8_content_ideas GROUP BY status ORDER BY count DESC "); if ($ideas_by_status): $total_ideas_status = array_sum(array_column($ideas_by_status, 'count')); $status_colors = [ 'new' => 'igny8-progress-blue', 'scheduled' => 'igny8-progress-amber', 'published' => 'igny8-progress-green', 'draft' => 'igny8-progress-purple', 'completed' => 'igny8-progress-green' ]; ?>
0 ? round(($status->count / $total_ideas_status) * 100) : 0; $color_class = $status_colors[$status->status] ?? 'igny8-progress-text-dim'; $status_display = ucfirst(str_replace('_', ' ', $status->status)); ?>
count); ?>
%

No ideas found yet

View Ideas

Next Actions

Actionable items requiring attention

0): ?>
keywords unmapped Map Keywords
0): ?>
clusters without ideas Generate Ideas
0): ?>
ideas not queued to writer Queue to Writer
Import new keywords to expand your strategy Import Keywords
All planning tasks completed! ✓ Ready for content creation
'planner', 'submodule' => 'home', 'ajaxUrl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('igny8_planner_settings'), 'cronKey' => $cron_key ]); break; } // Capture page content $igny8_page_content = ob_get_clean(); // Include global layout include_once plugin_dir_path(__FILE__) . '../../core/global-layout.php';