reference plugin and image gen analysis
This commit is contained in:
841
igny8-ai-seo-wp-plugin/modules/help/docs.php
Normal file
841
igny8-ai-seo-wp-plugin/modules/help/docs.php
Normal file
@@ -0,0 +1,841 @@
|
||||
<?php
|
||||
/**
|
||||
* ==========================
|
||||
* 🔐 IGNY8 FILE RULE HEADER
|
||||
* ==========================
|
||||
* @file : docs.php
|
||||
* @location : /modules/help/docs.php
|
||||
* @type : Admin Page
|
||||
* @scope : Module Only
|
||||
* @allowed : Technical documentation, API reference, architecture overview
|
||||
* @reusability : Single Use
|
||||
* @notes : Technical documentation page for help module
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Start output buffering
|
||||
ob_start();
|
||||
?>
|
||||
|
||||
<!-- System Overview Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Igny8 AI SEO - Complete Technical Snapshot</h3>
|
||||
<p class="igny8-card-subtitle">Comprehensive AI-powered SEO operating system for WordPress</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-admin-site igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>System Architecture</h4>
|
||||
<p>Igny8 is a sophisticated WordPress plugin that combines AI automation with configuration-driven architecture to deliver enterprise-level SEO functionality.</p>
|
||||
<ul>
|
||||
<li><strong>Modular Design:</strong> Independent modules with clear interfaces</li>
|
||||
<li><strong>AI-Centric:</strong> OpenAI integration for intelligent automation</li>
|
||||
<li><strong>Configuration-Driven:</strong> All UI components render from configuration files</li>
|
||||
<li><strong>Automation-First:</strong> CRON-based workflows for hands-off operation</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Core Modules</h4>
|
||||
<p>Eight main modules provide comprehensive SEO functionality across the entire content lifecycle.</p>
|
||||
<ul>
|
||||
<li><strong>Planner:</strong> Keyword research, clustering, and content planning</li>
|
||||
<li><strong>Writer:</strong> AI-powered content generation and task management</li>
|
||||
<li><strong>Analytics:</strong> Performance tracking and SEO analytics</li>
|
||||
<li><strong>Schedules:</strong> Automated task scheduling and CRON management</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Technical Stack</h4>
|
||||
<p>Built on WordPress with advanced AI integration and modern web technologies.</p>
|
||||
<ul>
|
||||
<li><strong>Backend:</strong> PHP 7.4+, WordPress 5.0+, MySQL 5.7+</li>
|
||||
<li><strong>AI Integration:</strong> OpenAI GPT-4, GPT-3.5-turbo</li>
|
||||
<li><strong>Frontend:</strong> Vanilla JavaScript, CSS3, HTML5</li>
|
||||
<li><strong>Database:</strong> 15 custom tables, WordPress integration</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- File Structure Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Complete File Structure</h3>
|
||||
<p class="igny8-card-subtitle">Organized file tree with detailed descriptions</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-media-code igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-file-tree">
|
||||
<pre><code>igny8-ai-seo/
|
||||
├── igny8.php # Main plugin bootstrap and initialization
|
||||
├── install.php # Database setup and plugin activation
|
||||
├── uninstall.php # Plugin cleanup and data removal
|
||||
├── igny8-wp-load-handler.php # CRON endpoint handler
|
||||
├── CHANGELOG.md # Version history and changes
|
||||
│
|
||||
├── ai/ # AI Integration System (5 files)
|
||||
│ ├── integration.php # API key setup and connection management
|
||||
│ ├── modules-ai.php # Common AI interface for modules
|
||||
│ ├── model-rates-config.php # AI model pricing and rate limits
|
||||
│ ├── openai-api.php # OpenAI API integration and AI functions
|
||||
│ └── prompts-library.php # AI prompts library and templates
|
||||
│
|
||||
├── assets/ # Frontend Assets
|
||||
│ ├── css/
|
||||
│ │ └── core.css # Main stylesheet (2000+ lines)
|
||||
│ ├── js/
|
||||
│ │ └── core.js # Main JavaScript (1000+ lines)
|
||||
│ ├── templates/ # CSV templates for import/export
|
||||
│ │ ├── igny8_clusters_template.csv
|
||||
│ │ ├── igny8_ideas_template.csv
|
||||
│ │ └── igny8_keywords_template.csv
|
||||
│ └── ai-images/ # AI-generated images
|
||||
│
|
||||
├── core/ # Core System Files
|
||||
│ ├── admin/ # Admin Interface System (7 files)
|
||||
│ │ ├── ajax.php # Centralized AJAX endpoint management
|
||||
│ │ ├── global-helpers.php # Global utility functions (50+ helpers)
|
||||
│ │ ├── init.php # Admin initialization and settings registration
|
||||
│ │ ├── menu.php # WordPress admin menu registration
|
||||
│ │ ├── meta-boxes.php # WordPress meta boxes integration
|
||||
│ │ ├── module-manager-class.php # Module management system
|
||||
│ │ └── routing.php # Admin page routing and content rendering
|
||||
│ ├── cron/ # CRON System (2 files)
|
||||
│ │ ├── igny8-cron-handlers.php # CRON task handlers
|
||||
│ │ └── igny8-cron-master-dispatcher.php # CRON master dispatcher
|
||||
│ ├── db/ # Database System (2 files)
|
||||
│ │ ├── db.php # Database operations, schema, and utilities
|
||||
│ │ └── db-migration.php # Version-based migration system
|
||||
│ ├── pages/ # Admin Page Templates (organized by module)
|
||||
│ │ ├── analytics/ # Analytics module pages (2 files)
|
||||
│ │ │ ├── analytics.php # Analytics and reporting interface
|
||||
│ │ │ └── status.php # System status and health monitoring
|
||||
│ │ ├── cron/ # CRON management pages
|
||||
│ │ ├── help/ # Help and documentation pages (2 files)
|
||||
│ │ │ ├── docs.php # Technical documentation page
|
||||
│ │ │ └── help.php # User guide and support page
|
||||
│ │ ├── settings/ # Settings module pages (4 files)
|
||||
│ │ │ ├── general-settings.php # General plugin settings interface
|
||||
│ │ │ ├── import-export.php # Data import/export interface
|
||||
│ │ │ ├── integration.php # API integration settings interface
|
||||
│ │ │ └── schedules.php # Scheduling and automation interface
|
||||
│ │ └── thinker/ # Thinker module pages (5 files)
|
||||
│ │ ├── image-testing.php # Image testing interface
|
||||
│ │ ├── main.php # Thinker main interface
|
||||
│ │ ├── profile.php # Thinker profile interface
|
||||
│ │ ├── prompts.php # Prompts management interface
|
||||
│ │ └── strategies.php # Strategies interface
|
||||
│ └── global-layout.php # Master UI layout template
|
||||
│
|
||||
├── debug/ # Debug & Monitoring System (5 files)
|
||||
│ ├── debug.php # Debug functionality (redirected to status)
|
||||
│ ├── module-debug.php # Module-specific debugging utilities
|
||||
│ ├── monitor-helpers.php # Monitoring helper functions
|
||||
│ ├── system-testing.php # System testing utilities
|
||||
│ └── temp-function-testing.php # Function testing utilities
|
||||
│
|
||||
├── docs/ # Documentation System (8 files)
|
||||
│ ├── HOW_TO_ADD_COLUMN.md # Database column addition guide
|
||||
│ ├── IGNY8_SNAPSHOT_V0.1.md # Complete plugin snapshot
|
||||
│ ├── MASTER_ARCHITECTURE.md # Master architecture documentation
|
||||
│ ├── how-tos/ # How-to guides (5 files)
|
||||
│ │ ├── 01-adding-new-pages-and-modules.md
|
||||
│ │ ├── 02-adding-new-modules-to-module-manager.md
|
||||
│ │ ├── 03-auto-clustering-system.md
|
||||
│ │ ├── cron-management.md
|
||||
│ │ └── HOW_TO_ADD_COLUMN.md
|
||||
│ └── parts/ # Architecture parts (2 files)
|
||||
│ ├── AI_INTEGRATION_ARCHITECTURE.md
|
||||
│ └── AUTOMATION_FLOWS.md
|
||||
│
|
||||
├── flows/ # Automation & Workflow System (3 files)
|
||||
│ ├── sync-ajax.php # Automation-specific AJAX handlers
|
||||
│ ├── sync-functions.php # Core automation logic and workflow functions
|
||||
│ └── sync-hooks.php # Workflow hook definitions and registration
|
||||
│
|
||||
└── modules/ # Module System
|
||||
├── components/ # Reusable UI Components (8 files)
|
||||
│ ├── actions-tpl.php # Action buttons template
|
||||
│ ├── export-modal-tpl.php # Export modal template
|
||||
│ ├── filters-tpl.php # Filter controls template
|
||||
│ ├── forms-tpl.php # Form rendering template
|
||||
│ ├── import-modal-tpl.php # Import modal template
|
||||
│ ├── kpi-tpl.php # KPI display template
|
||||
│ ├── pagination-tpl.php # Pagination controls template
|
||||
│ └── table-tpl.php # Data table template
|
||||
├── config/ # Configuration Files (5 files)
|
||||
│ ├── filters-config.php # Filter configuration definitions
|
||||
│ ├── forms-config.php # Form configuration definitions
|
||||
│ ├── import-export-config.php # Import/export configuration
|
||||
│ ├── kpi-config.php # KPI configuration definitions
|
||||
│ └── tables-config.php # Table configuration definitions
|
||||
└── modules-pages/ # Module Page Interfaces
|
||||
├── linker.php # Linker module interface
|
||||
├── optimizer.php # Optimizer module interface
|
||||
├── planner.php # Planner module interface
|
||||
├── writer.php # Writer module interface
|
||||
└── personalize/ # Personalization Module (7 files)
|
||||
├── content-generation.php # Content generation interface
|
||||
├── front-end.php # Frontend personalization
|
||||
├── personalize.ajax # Personalization AJAX handlers
|
||||
├── personalize.js # Personalization JavaScript
|
||||
├── personalize.php # Personalize module main interface
|
||||
├── rewrites.php # Content rewriting interface
|
||||
└── Settings.php # Personalization settings</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Database Schema Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Database Architecture</h3>
|
||||
<p class="igny8-card-subtitle">15 custom tables with comprehensive relationships</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-database igny8-dashboard-icon-lg igny8-dashboard-icon-green"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Core Data Tables</h4>
|
||||
<ul>
|
||||
<li><strong>igny8_keywords</strong> - Keyword research data with metrics</li>
|
||||
<li><strong>igny8_clusters</strong> - Content topic groupings with stored metrics</li>
|
||||
<li><strong>igny8_content_ideas</strong> - AI-generated content concepts</li>
|
||||
<li><strong>igny8_tasks</strong> - Writer workflow management</li>
|
||||
<li><strong>igny8_variations</strong> - Personalization content cache</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Analytics & Tracking</h4>
|
||||
<ul>
|
||||
<li><strong>igny8_logs</strong> - System audit trail and AI event logging</li>
|
||||
<li><strong>igny8_ai_queue</strong> - AI processing queue with retry logic</li>
|
||||
<li><strong>igny8_campaigns</strong> - Link building campaign management</li>
|
||||
<li><strong>igny8_backlinks</strong> - Backlink monitoring and tracking</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>WordPress Integration</h4>
|
||||
<ul>
|
||||
<li><strong>wp_options</strong> - Plugin settings (38+ options)</li>
|
||||
<li><strong>wp_posts</strong> - Generated WordPress content</li>
|
||||
<li><strong>wp_postmeta</strong> - Custom post meta fields (6 fields)</li>
|
||||
<li><strong>wp_terms</strong> - Custom taxonomies (sectors, clusters)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-data-flow">
|
||||
<h4>Data Flow Architecture</h4>
|
||||
<pre><code>Keywords → Clusters → Ideas → Tasks → WordPress Posts
|
||||
↓ ↓ ↓ ↓
|
||||
Mapping → Posts ← Variations (Personalization)
|
||||
↓
|
||||
Campaigns → Sites → Backlinks</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI Integration Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>AI Integration System</h3>
|
||||
<p class="igny8-card-subtitle">OpenAI integration with cost tracking and automation</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-robot igny8-dashboard-icon-lg igny8-dashboard-icon-orange"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>AI Functions</h4>
|
||||
<ul>
|
||||
<li><strong>Content Generation:</strong> Blog posts, landing pages, product descriptions</li>
|
||||
<li><strong>Keyword Analysis:</strong> Intent detection, difficulty scoring, clustering</li>
|
||||
<li><strong>SEO Optimization:</strong> Meta descriptions, title optimization</li>
|
||||
<li><strong>Personalization:</strong> Audience-specific content variations</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Model Configuration</h4>
|
||||
<ul>
|
||||
<li><strong>GPT-4:</strong> Primary model for complex tasks</li>
|
||||
<li><strong>GPT-3.5-turbo:</strong> Fallback for cost optimization</li>
|
||||
<li><strong>Rate Limiting:</strong> Automatic retry with exponential backoff</li>
|
||||
<li><strong>Cost Tracking:</strong> Daily budget limits and usage monitoring</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>AI Queue System</h4>
|
||||
<ul>
|
||||
<li><strong>Queue Processing:</strong> Background AI task processing</li>
|
||||
<li><strong>Retry Logic:</strong> Automatic retry for failed requests</li>
|
||||
<li><strong>Priority System:</strong> Task prioritization for efficient processing</li>
|
||||
<li><strong>Error Handling:</strong> Comprehensive error logging and recovery</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Automation Workflows Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Automation Workflows</h3>
|
||||
<p class="igny8-card-subtitle">Event-driven automation with CRON scheduling</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-update igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-workflow-examples">
|
||||
<div class="igny8-workflow">
|
||||
<h4>Keyword Processing Workflow</h4>
|
||||
<pre><code>// When keywords are imported/updated
|
||||
igny8_handle_keyword_cluster_update($keyword_id) {
|
||||
// Update cluster metrics
|
||||
igny8_update_cluster_metrics($cluster_id);
|
||||
|
||||
// Trigger AI clustering if enabled
|
||||
if (ai_enabled) {
|
||||
igny8_ajax_ai_cluster_keywords($keyword_ids);
|
||||
}
|
||||
}</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="igny8-workflow">
|
||||
<h4>Content Generation Workflow</h4>
|
||||
<pre><code>// When content ideas are created
|
||||
igny8_create_task_from_idea($idea_id) {
|
||||
// Create writer task
|
||||
$task_id = create_task($idea_data);
|
||||
|
||||
// Generate content if AI enabled
|
||||
if (ai_enabled) {
|
||||
igny8_ajax_ai_generate_content($task_id);
|
||||
}
|
||||
|
||||
// Update metrics
|
||||
igny8_update_idea_metrics($idea_id);
|
||||
}</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="igny8-workflow">
|
||||
<h4>Cluster Management Workflow</h4>
|
||||
<pre><code>// When clusters are created/updated
|
||||
igny8_auto_create_cluster_term($cluster_id) {
|
||||
// Create WordPress taxonomy term
|
||||
$term_id = wp_insert_term($cluster_name, 'clusters');
|
||||
|
||||
// Link cluster to term
|
||||
update_cluster_term_id($cluster_id, $term_id);
|
||||
|
||||
// Update metrics
|
||||
igny8_update_cluster_metrics($cluster_id);
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Configuration System Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Configuration System</h3>
|
||||
<p class="igny8-card-subtitle">Configuration-driven UI with reusable components</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-admin-tools igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Table Configuration</h4>
|
||||
<p>Dynamic table rendering with sorting, filtering, and pagination based on configuration files.</p>
|
||||
<ul>
|
||||
<li><strong>Column Definitions:</strong> Field types, labels, and display options</li>
|
||||
<li><strong>Sorting & Filtering:</strong> Configurable sort and filter options</li>
|
||||
<li><strong>Actions:</strong> Bulk operations and individual record actions</li>
|
||||
<li><strong>Pagination:</strong> Configurable page sizes and navigation</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Form Configuration</h4>
|
||||
<p>Dynamic form generation with validation and field types based on configuration.</p>
|
||||
<ul>
|
||||
<li><strong>Field Types:</strong> Text, number, select, textarea, date, etc.</li>
|
||||
<li><strong>Validation:</strong> Required fields, data types, and custom validation</li>
|
||||
<li><strong>Lookup Fields:</strong> Foreign key relationships and dropdown options</li>
|
||||
<li><strong>Conditional Logic:</strong> Show/hide fields based on other field values</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>KPI Configuration</h4>
|
||||
<p>Dynamic metrics display with charts and trend indicators based on configuration.</p>
|
||||
<ul>
|
||||
<li><strong>Metric Types:</strong> Count, sum, average, percentage calculations</li>
|
||||
<li><strong>Visualization:</strong> Charts, graphs, and trend indicators</li>
|
||||
<li><strong>Filtering:</strong> Date ranges and conditional filtering</li>
|
||||
<li><strong>Real-time Updates:</strong> Live data updates and caching</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Security & Performance Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Security & Performance</h3>
|
||||
<p class="igny8-card-subtitle">Enterprise-level security and optimization</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-shield igny8-dashboard-icon-lg igny8-dashboard-icon-red"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Security Measures</h4>
|
||||
<ul>
|
||||
<li><strong>Nonce Verification:</strong> All AJAX requests protected with WordPress nonces</li>
|
||||
<li><strong>Capability Checks:</strong> User permission validation for all operations</li>
|
||||
<li><strong>Data Sanitization:</strong> All input data sanitized and validated</li>
|
||||
<li><strong>SQL Injection Protection:</strong> Prepared statements for all database queries</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Performance Optimizations</h4>
|
||||
<ul>
|
||||
<li><strong>Conditional Loading:</strong> Admin assets only loaded when needed</li>
|
||||
<li><strong>Database Indexing:</strong> Optimized indexes on frequently queried fields</li>
|
||||
<li><strong>Caching:</strong> WordPress transients for expensive operations</li>
|
||||
<li><strong>Lazy Loading:</strong> AJAX-based data loading for large datasets</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Monitoring & Debugging</h4>
|
||||
<ul>
|
||||
<li><strong>Real-time Monitoring:</strong> Live system health monitoring</li>
|
||||
<li><strong>Module Debug:</strong> Individual module performance tracking</li>
|
||||
<li><strong>Error Logging:</strong> Comprehensive error tracking and reporting</li>
|
||||
<li><strong>Performance Metrics:</strong> Response times and resource usage</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- API Reference Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>API Reference</h3>
|
||||
<p class="igny8-card-subtitle">Complete function and endpoint documentation</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-book igny8-dashboard-icon-lg igny8-dashboard-icon-green"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-api-reference">
|
||||
<div class="igny8-api-section">
|
||||
<h4>Core Functions</h4>
|
||||
<div class="igny8-grid-2">
|
||||
<div>
|
||||
<h5>Database Functions</h5>
|
||||
<ul>
|
||||
<li><strong>igny8_create_all_tables()</strong> - Create all database tables</li>
|
||||
<li><strong>igny8_register_taxonomies()</strong> - Register custom taxonomies</li>
|
||||
<li><strong>igny8_register_post_meta()</strong> - Register custom post meta</li>
|
||||
<li><strong>igny8_install_database()</strong> - Complete plugin installation</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h5>Admin Functions</h5>
|
||||
<ul>
|
||||
<li><strong>igny8_get_cluster_options()</strong> - Get cluster dropdown options</li>
|
||||
<li><strong>igny8_get_sector_options()</strong> - Get sector dropdown options</li>
|
||||
<li><strong>igny8_render_table()</strong> - Render dynamic tables</li>
|
||||
<li><strong>igny8_render_filters()</strong> - Render filter controls</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-api-section">
|
||||
<h4>AI Functions</h4>
|
||||
<div class="igny8-grid-2">
|
||||
<div>
|
||||
<h5>Content Generation</h5>
|
||||
<ul>
|
||||
<li><strong>igny8_generate_blog_post()</strong> - Generate blog post content</li>
|
||||
<li><strong>igny8_generate_landing_page()</strong> - Generate landing page content</li>
|
||||
<li><strong>igny8_generate_product_description()</strong> - Generate product content</li>
|
||||
<li><strong>igny8_generate_seo_meta()</strong> - Generate SEO meta data</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h5>AI Analysis</h5>
|
||||
<ul>
|
||||
<li><strong>igny8_ai_analyze_keywords()</strong> - Analyze keywords using AI</li>
|
||||
<li><strong>igny8_ai_cluster_keywords()</strong> - Cluster keywords using AI</li>
|
||||
<li><strong>igny8_ai_generate_ideas()</strong> - Generate content ideas</li>
|
||||
<li><strong>igny8_ai_optimize_content()</strong> - Optimize existing content</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-api-section">
|
||||
<h4>Automation Functions</h4>
|
||||
<div class="igny8-grid-2">
|
||||
<div>
|
||||
<h5>Workflow Functions</h5>
|
||||
<ul>
|
||||
<li><strong>igny8_update_cluster_metrics()</strong> - Update cluster metrics</li>
|
||||
<li><strong>igny8_update_idea_metrics()</strong> - Update idea metrics</li>
|
||||
<li><strong>igny8_workflow_triggers()</strong> - Trigger workflow automation</li>
|
||||
<li><strong>igny8_bulk_delete_keywords()</strong> - Bulk delete keywords</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h5>AJAX Endpoints</h5>
|
||||
<ul>
|
||||
<li><strong>wp_ajax_igny8_get_table_data</strong> - Get table data</li>
|
||||
<li><strong>wp_ajax_igny8_save_record</strong> - Save/update record</li>
|
||||
<li><strong>wp_ajax_igny8_ai_generate_content</strong> - AI content generation</li>
|
||||
<li><strong>wp_ajax_igny8_bulk_action</strong> - Perform bulk actions</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Development Workflow Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Development Workflow</h3>
|
||||
<p class="igny8-card-subtitle">Guidelines for extending and maintaining the plugin</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-editor-code igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Adding New Modules</h4>
|
||||
<ol>
|
||||
<li>Create module page in <code>modules/modules-pages/</code></li>
|
||||
<li>Update module manager in <code>core/admin/module-manager-class.php</code></li>
|
||||
<li>Add table, form, and filter configurations</li>
|
||||
<li>Register routes in <code>core/admin/routing.php</code></li>
|
||||
<li>Add menu items in <code>core/admin/menu.php</code></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Adding New Tables</h4>
|
||||
<ol>
|
||||
<li>Add database schema to <code>core/db/db.php</code></li>
|
||||
<li>Create migration in <code>core/db/db-migration.php</code></li>
|
||||
<li>Add table configuration to <code>modules/config/tables-config.php</code></li>
|
||||
<li>Add form configuration to <code>modules/config/forms-config.php</code></li>
|
||||
<li>Add filter configuration to <code>modules/config/filters-config.php</code></li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Adding AI Features</h4>
|
||||
<ol>
|
||||
<li>Add prompt template to <code>ai/prompts-library.php</code></li>
|
||||
<li>Add AI handler to <code>ai/modules-ai.php</code></li>
|
||||
<li>Add queue processing to <code>flows/sync-functions.php</code></li>
|
||||
<li>Add AJAX endpoint to <code>flows/sync-ajax.php</code></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.igny8-help-page {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.igny8-standard-header {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.igny8-card-header-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.igny8-card-title-text h3 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.igny8-card-subtitle {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.igny8-dashboard-icon-lg {
|
||||
font-size: 32px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.igny8-dashboard-icon-blue { color: #3b82f6; }
|
||||
.igny8-dashboard-icon-green { color: #10b981; }
|
||||
.igny8-dashboard-icon-purple { color: #8b5cf6; }
|
||||
.igny8-dashboard-icon-orange { color: #f59e0b; }
|
||||
.igny8-dashboard-icon-red { color: #ef4444; }
|
||||
|
||||
.igny8-module-overview {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-module-section {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #3b82f6;
|
||||
}
|
||||
|
||||
.igny8-module-section h4 {
|
||||
margin: 0 0 12px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-module-section p {
|
||||
margin: 0 0 15px 0;
|
||||
color: #6b7280;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.igny8-module-section ul {
|
||||
margin: 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.igny8-module-section li {
|
||||
margin-bottom: 8px;
|
||||
color: #374151;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.igny8-file-tree {
|
||||
background: #1f2937;
|
||||
color: #f9fafb;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
overflow-x: auto;
|
||||
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.igny8-file-tree pre {
|
||||
margin: 0;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.igny8-data-flow {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
background: #f8fafc;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #10b981;
|
||||
}
|
||||
|
||||
.igny8-data-flow pre {
|
||||
background: #1f2937;
|
||||
color: #f9fafb;
|
||||
padding: 15px;
|
||||
border-radius: 6px;
|
||||
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||
font-size: 13px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.igny8-workflow-examples {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.igny8-workflow {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #8b5cf6;
|
||||
}
|
||||
|
||||
.igny8-workflow h4 {
|
||||
margin: 0 0 15px 0;
|
||||
color: #1f2937;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.igny8-workflow pre {
|
||||
background: #1f2937;
|
||||
color: #f9fafb;
|
||||
padding: 15px;
|
||||
border-radius: 6px;
|
||||
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||
font-size: 12px;
|
||||
overflow-x: auto;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.igny8-api-reference {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-api-section {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #3b82f6;
|
||||
}
|
||||
|
||||
.igny8-api-section h4 {
|
||||
margin: 0 0 20px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-api-section h5 {
|
||||
margin: 0 0 10px 0;
|
||||
color: #374151;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.igny8-api-section ul {
|
||||
margin: 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.igny8-api-section li {
|
||||
margin-bottom: 6px;
|
||||
color: #4b5563;
|
||||
line-height: 1.4;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.igny8-api-section code {
|
||||
background: #e5e7eb;
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.igny8-card-header-content {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.igny8-module-overview,
|
||||
.igny8-workflow-examples {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.igny8-file-tree {
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
122
igny8-ai-seo-wp-plugin/modules/help/function-testing.php
Normal file
122
igny8-ai-seo-wp-plugin/modules/help/function-testing.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
/**
|
||||
* ==========================
|
||||
* 🔐 IGNY8 FILE RULE HEADER
|
||||
* ==========================
|
||||
* @file : function-testing.php
|
||||
* @location : /modules/help/function-testing.php
|
||||
* @type : Debug Tool
|
||||
* @scope : Module Only
|
||||
* @allowed : Function testing, development tools, debugging functions
|
||||
* @reusability : Single Use
|
||||
* @notes : Function testing interface for help module (dev-only)
|
||||
*/
|
||||
|
||||
// Note: AJAX handlers are now registered in core/admin/ajax.php
|
||||
// This file only contains the HTML interface for testing
|
||||
|
||||
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h1>Test Page</h1>
|
||||
<p>This is a test page</p>
|
||||
|
||||
|
||||
<h2>AJAX Text Input Test</h2>
|
||||
<form id="ajax-text-form">
|
||||
<input type="hidden" id="ajax_text_nonce" name="ajax_text_nonce" value="<?php echo wp_create_nonce('ajax_text_action'); ?>" />
|
||||
|
||||
<table class="form-table">
|
||||
<tr>
|
||||
<th scope="row">
|
||||
<label for="ajax_text_input">Test Text Input</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="text" id="ajax_text_input" name="ajax_text_input" value="<?php echo esc_attr(get_option('igny8_ajax_test_text', '')); ?>" class="regular-text" placeholder="Enter some text to save via AJAX" />
|
||||
<p class="description">This text will be saved using AJAX without page reload</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<button type="button" id="ajax-save-btn" class="button button-primary">Save Text via AJAX</button>
|
||||
<button type="button" id="ajax-test-btn" class="button button-secondary">Test AJAX</button>
|
||||
<span id="ajax-status" style="margin-left: 10px;"></span>
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
// Test AJAX button
|
||||
$('#ajax-test-btn').click(function(e){
|
||||
e.preventDefault();
|
||||
$('#ajax-status').html('<span style="color: blue;">Testing AJAX...</span>');
|
||||
|
||||
$.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'POST',
|
||||
data: {
|
||||
action: 'igny8_test_ajax'
|
||||
},
|
||||
success: function(response){
|
||||
if (response.success) {
|
||||
$('#ajax-status').html('<span style="color: green;">✓ ' + response.data + '</span>');
|
||||
} else {
|
||||
$('#ajax-status').html('<span style="color: red;">✗ Test failed: ' + response.data + '</span>');
|
||||
}
|
||||
},
|
||||
error: function(){
|
||||
$('#ajax-status').html('<span style="color: red;">✗ AJAX connection failed</span>');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Save AJAX button
|
||||
$('#ajax-save-btn').click(function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var textValue = $('#ajax_text_input').val().trim();
|
||||
|
||||
if (!textValue) {
|
||||
$('#ajax-status').html('<span style="color: red;">Please enter some text</span>');
|
||||
return;
|
||||
}
|
||||
|
||||
// Show loading state
|
||||
$('#ajax-status').html('<span style="color: blue;">Saving...</span>');
|
||||
$('#ajax-save-btn').prop('disabled', true);
|
||||
|
||||
$.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'POST',
|
||||
data: {
|
||||
action: 'igny8_save_ajax_text',
|
||||
ajax_text_input: textValue,
|
||||
ajax_text_nonce: $('#ajax_text_nonce').val()
|
||||
},
|
||||
success: function(response){
|
||||
if (response.success) {
|
||||
$('#ajax-status').html('<span style="color: green;">✓ ' + response.data + '</span>');
|
||||
// Update the input field to show the saved value
|
||||
$('#ajax_text_input').val(textValue);
|
||||
} else {
|
||||
$('#ajax-status').html('<span style="color: red;">✗ Error: ' + response.data + '</span>');
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error){
|
||||
$('#ajax-status').html('<span style="color: red;">✗ AJAX Error: ' + error + '</span>');
|
||||
},
|
||||
complete: function(){
|
||||
$('#ajax-save-btn').prop('disabled', false);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
// Note: This file is included by help.php, so no need to capture content or include layout
|
||||
// The content will be captured by the parent help.php file
|
||||
?>
|
||||
|
||||
834
igny8-ai-seo-wp-plugin/modules/help/help.php
Normal file
834
igny8-ai-seo-wp-plugin/modules/help/help.php
Normal file
@@ -0,0 +1,834 @@
|
||||
<?php
|
||||
/**
|
||||
* ==========================
|
||||
* 🔐 IGNY8 FILE RULE HEADER
|
||||
* ==========================
|
||||
* @file : help.php
|
||||
* @location : /modules/help/help.php
|
||||
* @type : Admin Page
|
||||
* @scope : Module Only
|
||||
* @allowed : Help content, documentation, user guides, subpage routing
|
||||
* @reusability : Single Use
|
||||
* @notes : Main help page with subpage routing for help module
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Handle URL parameters for subpages
|
||||
$subpage = $_GET['sp'] ?? 'help';
|
||||
$GLOBALS['current_subpage'] = $subpage;
|
||||
$GLOBALS['current_module'] = 'help';
|
||||
|
||||
// Start output buffering
|
||||
ob_start();
|
||||
|
||||
switch ($subpage) {
|
||||
case 'docs':
|
||||
include plugin_dir_path(__FILE__) . 'docs.php';
|
||||
break;
|
||||
case 'system-testing':
|
||||
include plugin_dir_path(__FILE__) . 'system-testing.php';
|
||||
break;
|
||||
case 'function-testing':
|
||||
include plugin_dir_path(__FILE__) . 'function-testing.php';
|
||||
break;
|
||||
case 'help':
|
||||
default:
|
||||
// Main help content (existing content below)
|
||||
?>
|
||||
|
||||
<div class="igny8-help-page">
|
||||
|
||||
<!-- Welcome Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Welcome to Igny8 AI SEO</h3>
|
||||
<p class="igny8-card-subtitle">Your complete AI-powered SEO solution for WordPress</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-admin-site igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<p>Igny8 is a comprehensive AI-powered SEO plugin that helps you research keywords, plan content, and optimize your website for search engines using artificial intelligence. Transform your content strategy with intelligent automation and AI-driven insights.</p>
|
||||
|
||||
<div class="igny8-feature-highlights">
|
||||
<div class="igny8-feature-item">
|
||||
<span class="dashicons dashicons-search"></span>
|
||||
<strong>Smart Keyword Research</strong> - AI-powered keyword analysis and clustering
|
||||
</div>
|
||||
<div class="igny8-feature-item">
|
||||
<span class="dashicons dashicons-edit"></span>
|
||||
<strong>Content Generation</strong> - Create high-quality content with AI assistance
|
||||
</div>
|
||||
<div class="igny8-feature-item">
|
||||
<span class="dashicons dashicons-chart-line"></span>
|
||||
<strong>Performance Tracking</strong> - Monitor your SEO progress and results
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Getting Started Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Getting Started</h3>
|
||||
<p class="igny8-card-subtitle">Set up your AI-powered SEO workflow in minutes</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-arrow-right-alt igny8-dashboard-icon-lg igny8-dashboard-icon-green"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<div class="igny8-step-header">
|
||||
<span class="igny8-step-number">1</span>
|
||||
<h4>Configure AI Integration</h4>
|
||||
</div>
|
||||
<p>Go to <strong>Settings > AI Integration</strong> and enter your OpenAI API key. Choose your preferred AI model (GPT-4 recommended for best results).</p>
|
||||
<ul>
|
||||
<li><strong>API Key Setup:</strong> Enter your OpenAI API key for AI functionality</li>
|
||||
<li><strong>Model Selection:</strong> Choose between GPT-4, GPT-3.5-turbo, or other available models</li>
|
||||
<li><strong>Cost Management:</strong> Set daily limits to control API usage costs</li>
|
||||
<li><strong>Testing:</strong> Test your AI integration to ensure everything works properly</li>
|
||||
</ul>
|
||||
<div class="igny8-step-tip">
|
||||
<strong>💡 Tip:</strong> You can get an OpenAI API key from platform.openai.com
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<div class="igny8-step-header">
|
||||
<span class="igny8-step-number">2</span>
|
||||
<h4>Import Your Keywords</h4>
|
||||
</div>
|
||||
<p>Navigate to <strong>Planner > Keywords</strong> and import your keyword list or add keywords manually. Set search volume, difficulty, and intent for each keyword.</p>
|
||||
<ul>
|
||||
<li><strong>Bulk Import:</strong> Upload CSV files with keyword data</li>
|
||||
<li><strong>Manual Entry:</strong> Add keywords one by one with detailed metrics</li>
|
||||
<li><strong>Data Enrichment:</strong> Set search volume, difficulty, and CPC data</li>
|
||||
<li><strong>Intent Classification:</strong> Categorize keywords by user intent</li>
|
||||
</ul>
|
||||
<div class="igny8-step-tip">
|
||||
<strong>💡 Tip:</strong> Use the bulk import feature to add multiple keywords at once
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<div class="igny8-step-header">
|
||||
<span class="igny8-step-number">3</span>
|
||||
<h4>Create Content Clusters</h4>
|
||||
</div>
|
||||
<p>Go to <strong>Planner > Clusters</strong> and group related keywords into content topics. Use AI clustering to automatically organize your keywords.</p>
|
||||
<ul>
|
||||
<li><strong>AI Clustering:</strong> Automatically group related keywords using AI</li>
|
||||
<li><strong>Manual Organization:</strong> Create custom clusters for specific topics</li>
|
||||
<li><strong>Cluster Metrics:</strong> Track keyword count, volume, and difficulty</li>
|
||||
<li><strong>Content Mapping:</strong> Link clusters to published content</li>
|
||||
</ul>
|
||||
<div class="igny8-step-tip">
|
||||
<strong>💡 Tip:</strong> Let AI suggest cluster groupings for faster organization
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<div class="igny8-step-header">
|
||||
<span class="igny8-step-number">4</span>
|
||||
<h4>Generate Content Ideas</h4>
|
||||
</div>
|
||||
<p>Visit <strong>Planner > Ideas</strong> to generate AI-powered content ideas based on your clusters. Refine and prepare ideas for content creation.</p>
|
||||
<ul>
|
||||
<li><strong>AI Generation:</strong> Create content ideas using artificial intelligence</li>
|
||||
<li><strong>Keyword Integration:</strong> Ideas include target keywords and topics</li>
|
||||
<li><strong>Content Types:</strong> Generate ideas for blog posts, guides, and more</li>
|
||||
<li><strong>Idea Management:</strong> Organize and prioritize content ideas</li>
|
||||
</ul>
|
||||
<div class="igny8-step-tip">
|
||||
<strong>💡 Tip:</strong> Generate multiple ideas per cluster for content variety
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<div class="igny8-step-header">
|
||||
<span class="igny8-step-number">5</span>
|
||||
<h4>Create and Publish Content</h4>
|
||||
</div>
|
||||
<p>Go to <strong>Writer > Tasks</strong> to create content tasks from your ideas. Use AI to generate content or write manually, then publish directly to your site.</p>
|
||||
<ul>
|
||||
<li><strong>Task Creation:</strong> Convert ideas into actionable content tasks</li>
|
||||
<li><strong>AI Content Generation:</strong> Generate high-quality content using AI</li>
|
||||
<li><strong>Content Review:</strong> Edit and refine content before publishing</li>
|
||||
<li><strong>Direct Publishing:</strong> Publish content directly to your WordPress site</li>
|
||||
</ul>
|
||||
<div class="igny8-step-tip">
|
||||
<strong>💡 Tip:</strong> Review AI-generated content before publishing to ensure quality
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Planner Module Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Planner Module</h3>
|
||||
<p class="igny8-card-subtitle">Research keywords, create clusters, and generate content ideas</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-search igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Keywords Management</h4>
|
||||
<p>Research and organize keywords by search volume, difficulty, and intent. Import keywords from various sources or add them manually.</p>
|
||||
<ul>
|
||||
<li><strong>Import Keywords:</strong> Upload CSV files or paste keyword lists</li>
|
||||
<li><strong>Set Metrics:</strong> Add search volume, difficulty, and CPC data</li>
|
||||
<li><strong>Intent Classification:</strong> Categorize keywords by user intent</li>
|
||||
<li><strong>Status Tracking:</strong> Monitor keyword mapping and usage</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Content Clusters</h4>
|
||||
<p>Group related keywords into content topics for better content planning and SEO strategy.</p>
|
||||
<ul>
|
||||
<li><strong>AI Clustering:</strong> Automatically group related keywords</li>
|
||||
<li><strong>Manual Organization:</strong> Create custom clusters for specific topics</li>
|
||||
<li><strong>Cluster Metrics:</strong> Track keyword count, volume, and difficulty</li>
|
||||
<li><strong>Content Mapping:</strong> Link clusters to published content</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Content Ideas</h4>
|
||||
<p>Generate AI-powered content ideas based on your keyword clusters and research.</p>
|
||||
<ul>
|
||||
<li><strong>AI Generation:</strong> Create content ideas using artificial intelligence</li>
|
||||
<li><strong>Keyword Integration:</strong> Ideas include target keywords and topics</li>
|
||||
<li><strong>Content Types:</strong> Generate ideas for blog posts, guides, and more</li>
|
||||
<li><strong>Idea Management:</strong> Organize and prioritize content ideas</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Writer Module Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Writer Module</h3>
|
||||
<p class="igny8-card-subtitle">Create, manage, and publish content with AI assistance</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-edit igny8-dashboard-icon-lg igny8-dashboard-icon-orange"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Content Tasks</h4>
|
||||
<p>Create and manage content writing tasks with detailed specifications and deadlines.</p>
|
||||
<ul>
|
||||
<li><strong>Task Creation:</strong> Convert ideas into actionable content tasks</li>
|
||||
<li><strong>Priority Setting:</strong> Organize tasks by importance and urgency</li>
|
||||
<li><strong>Deadline Management:</strong> Set and track content deadlines</li>
|
||||
<li><strong>Progress Tracking:</strong> Monitor task completion status</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>AI Content Generation</h4>
|
||||
<p>Generate high-quality content using AI based on your research and specifications.</p>
|
||||
<ul>
|
||||
<li><strong>Blog Posts:</strong> Create complete blog post content</li>
|
||||
<li><strong>Landing Pages:</strong> Generate optimized landing page copy</li>
|
||||
<li><strong>Product Descriptions:</strong> Write compelling product content</li>
|
||||
<li><strong>SEO Meta:</strong> Generate titles, descriptions, and meta tags</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Content Workflow</h4>
|
||||
<p>Track content from idea to publication with automated workflows and status updates.</p>
|
||||
<ul>
|
||||
<li><strong>Draft Management:</strong> Create and manage content drafts</li>
|
||||
<li><strong>Review Process:</strong> Track content review and approval</li>
|
||||
<li><strong>Publishing:</strong> Publish content directly to your WordPress site</li>
|
||||
<li><strong>Status Updates:</strong> Automatic status updates throughout the workflow</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Analytics Module Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Analytics Module</h3>
|
||||
<p class="igny8-card-subtitle">Track performance and monitor your SEO progress</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-chart-line igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Performance Metrics</h4>
|
||||
<p>Monitor key SEO metrics and track your content performance over time.</p>
|
||||
<ul>
|
||||
<li><strong>Keyword Rankings:</strong> Track keyword position changes</li>
|
||||
<li><strong>Content Performance:</strong> Monitor page views and engagement</li>
|
||||
<li><strong>SEO Scores:</strong> Track overall SEO improvement</li>
|
||||
<li><strong>Traffic Analysis:</strong> Monitor organic traffic growth</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Content Analytics</h4>
|
||||
<p>Analyze your content performance and identify optimization opportunities.</p>
|
||||
<ul>
|
||||
<li><strong>Top Performing Content:</strong> Identify your best-performing pages</li>
|
||||
<li><strong>Content Gaps:</strong> Find opportunities for new content</li>
|
||||
<li><strong>Keyword Performance:</strong> Track which keywords drive traffic</li>
|
||||
<li><strong>Conversion Tracking:</strong> Monitor content conversion rates</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Schedules Module Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Schedules Module</h3>
|
||||
<p class="igny8-card-subtitle">Automate your SEO tasks with intelligent scheduling</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-clock igny8-dashboard-icon-lg igny8-dashboard-icon-green"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-module-overview">
|
||||
<div class="igny8-module-section">
|
||||
<h4>Automated Tasks</h4>
|
||||
<p>Set up automated tasks to run keyword research, content generation, and optimization tasks.</p>
|
||||
<ul>
|
||||
<li><strong>Keyword Research:</strong> Automatically discover new keywords</li>
|
||||
<li><strong>Content Generation:</strong> Schedule AI content creation</li>
|
||||
<li><strong>SEO Audits:</strong> Regular automated SEO analysis</li>
|
||||
<li><strong>Performance Reports:</strong> Scheduled performance reports</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-module-section">
|
||||
<h4>Workflow Automation</h4>
|
||||
<p>Create automated workflows that trigger based on specific conditions and schedules.</p>
|
||||
<ul>
|
||||
<li><strong>Trigger Conditions:</strong> Set up conditions for task execution</li>
|
||||
<li><strong>Schedule Management:</strong> Configure when tasks should run</li>
|
||||
<li><strong>Notification System:</strong> Get alerts when tasks complete</li>
|
||||
<li><strong>Error Handling:</strong> Automatic retry and error management</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI Features Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>AI-Powered Features</h3>
|
||||
<p class="igny8-card-subtitle">Leverage artificial intelligence for smarter SEO</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-robot igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-ai-features">
|
||||
<div class="igny8-ai-feature">
|
||||
<h4>Intelligent Keyword Analysis</h4>
|
||||
<p>AI analyzes your keywords to determine search intent, difficulty, and optimization opportunities.</p>
|
||||
<ul>
|
||||
<li>Automatic intent classification (informational, commercial, navigational)</li>
|
||||
<li>AI-powered difficulty scoring</li>
|
||||
<li>Keyword clustering and grouping</li>
|
||||
<li>Competition analysis and insights</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-ai-feature">
|
||||
<h4>Smart Content Generation</h4>
|
||||
<p>Generate high-quality, SEO-optimized content using advanced AI models.</p>
|
||||
<ul>
|
||||
<li>Context-aware content creation</li>
|
||||
<li>SEO optimization built-in</li>
|
||||
<li>Multiple content formats (blog posts, landing pages, product descriptions)</li>
|
||||
<li>Automatic keyword integration</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-ai-feature">
|
||||
<h4>Automated Content Optimization</h4>
|
||||
<p>AI continuously optimizes your content for better search engine performance.</p>
|
||||
<ul>
|
||||
<li>Automatic SEO scoring and suggestions</li>
|
||||
<li>Content improvement recommendations</li>
|
||||
<li>Keyword density optimization</li>
|
||||
<li>Readability enhancement</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Best Practices Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Best Practices</h3>
|
||||
<p class="igny8-card-subtitle">Get the most out of your AI-powered SEO workflow</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-star-filled igny8-dashboard-icon-lg igny8-dashboard-icon-yellow"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-best-practices">
|
||||
<div class="igny8-practice-category">
|
||||
<h4>Content Strategy</h4>
|
||||
<ul>
|
||||
<li><strong>Plan Before You Write:</strong> Use the Planner module to research keywords and create clusters before writing</li>
|
||||
<li><strong>Quality Over Quantity:</strong> Focus on creating high-quality, comprehensive content rather than many short posts</li>
|
||||
<li><strong>Regular Content Updates:</strong> Keep your content fresh and updated to maintain search rankings</li>
|
||||
<li><strong>User Intent Focus:</strong> Always consider what users are looking for when creating content</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-practice-category">
|
||||
<h4>AI Usage</h4>
|
||||
<ul>
|
||||
<li><strong>Review AI Content:</strong> Always review and edit AI-generated content before publishing</li>
|
||||
<li><strong>Use AI as a Starting Point:</strong> Let AI generate ideas and drafts, then add your unique perspective</li>
|
||||
<li><strong>Monitor API Usage:</strong> Keep track of your OpenAI API usage to manage costs</li>
|
||||
<li><strong>Test Different Prompts:</strong> Experiment with different AI prompts to get better results</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="igny8-practice-category">
|
||||
<h4>SEO Optimization</h4>
|
||||
<ul>
|
||||
<li><strong>Keyword Research First:</strong> Always start with thorough keyword research</li>
|
||||
<li><strong>Monitor Performance:</strong> Regularly check your analytics to see what's working</li>
|
||||
<li><strong>Optimize for Users:</strong> Write for humans first, search engines second</li>
|
||||
<li><strong>Build Authority:</strong> Focus on creating content that establishes your expertise</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Troubleshooting Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Troubleshooting</h3>
|
||||
<p class="igny8-card-subtitle">Common issues and solutions</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-sos igny8-dashboard-icon-lg igny8-dashboard-icon-red"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-troubleshooting">
|
||||
<div class="igny8-issue-category">
|
||||
<h4>AI Integration Issues</h4>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> AI features not working
|
||||
<br><strong>Solution:</strong> Check your OpenAI API key in Settings > AI Integration. Ensure you have sufficient API credits and a stable internet connection.
|
||||
</div>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> Slow AI responses
|
||||
<br><strong>Solution:</strong> Try switching to a faster model like GPT-3.5-turbo or check your internet connection speed.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-issue-category">
|
||||
<h4>Performance Issues</h4>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> Slow page loading
|
||||
<br><strong>Solution:</strong> Reduce the number of records per page in table settings, clear your browser cache, or check for plugin conflicts.
|
||||
</div>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> Missing data
|
||||
<br><strong>Solution:</strong> Check that database tables are created correctly by visiting Settings > Status and running a system check.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-issue-category">
|
||||
<h4>Content Issues</h4>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> AI content quality issues
|
||||
<br><strong>Solution:</strong> Try different prompts, provide more specific instructions, or use the content as a starting point for manual editing.
|
||||
</div>
|
||||
<div class="igny8-issue">
|
||||
<strong>Problem:</strong> Keywords not being used properly
|
||||
<br><strong>Solution:</strong> Ensure keywords are properly imported and mapped to clusters before generating content.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Support Section -->
|
||||
<div class="igny8-standard-header">
|
||||
<div class="igny8-card-header-content">
|
||||
<div class="igny8-card-title-text">
|
||||
<h3>Support & Resources</h3>
|
||||
<p class="igny8-card-subtitle">Get help when you need it</p>
|
||||
</div>
|
||||
<div class="igny8-card-icon">
|
||||
<span class="dashicons dashicons-info igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="igny8-card">
|
||||
<div class="igny8-card-body">
|
||||
<div class="igny8-support-resources">
|
||||
<div class="igny8-support-item">
|
||||
<h4>System Status</h4>
|
||||
<p>Check your system health and configuration at <strong>Settings > Status</strong>. This page shows database status, AI integration, and system performance.</p>
|
||||
</div>
|
||||
|
||||
<div class="igny8-support-item">
|
||||
<h4>Debug Information</h4>
|
||||
<p>Use the built-in debug tools to monitor real-time system status and identify any issues with your setup.</p>
|
||||
</div>
|
||||
|
||||
<div class="igny8-support-item">
|
||||
<h4>Regular Backups</h4>
|
||||
<p>Always backup your WordPress site before making major changes or updates to ensure you can restore if needed.</p>
|
||||
</div>
|
||||
|
||||
<div class="igny8-support-item">
|
||||
<h4>API Monitoring</h4>
|
||||
<p>Keep track of your OpenAI API usage to manage costs and ensure you don't exceed your limits.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php
|
||||
break;
|
||||
}
|
||||
?>
|
||||
|
||||
<style>
|
||||
.igny8-help-page {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.igny8-standard-header {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.igny8-card-header-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.igny8-card-title-text h3 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.igny8-card-subtitle {
|
||||
margin: 0;
|
||||
font-size: 16px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.igny8-dashboard-icon-lg {
|
||||
font-size: 32px;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.igny8-dashboard-icon-blue { color: #3b82f6; }
|
||||
.igny8-dashboard-icon-green { color: #10b981; }
|
||||
.igny8-dashboard-icon-purple { color: #8b5cf6; }
|
||||
.igny8-dashboard-icon-orange { color: #f59e0b; }
|
||||
.igny8-dashboard-icon-yellow { color: #eab308; }
|
||||
.igny8-dashboard-icon-red { color: #ef4444; }
|
||||
|
||||
.igny8-feature-highlights {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 20px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.igny8-feature-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 15px;
|
||||
background: #f8fafc;
|
||||
border-radius: 6px;
|
||||
border-left: 4px solid #3b82f6;
|
||||
}
|
||||
|
||||
.igny8-step-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.igny8-step-header .igny8-step-number {
|
||||
background: #3b82f6;
|
||||
color: white;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.igny8-step-header h4 {
|
||||
margin: 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-step-tip {
|
||||
background: #fef3c7;
|
||||
border: 1px solid #f59e0b;
|
||||
border-radius: 6px;
|
||||
padding: 12px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.igny8-module-overview {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-module-section {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #3b82f6;
|
||||
}
|
||||
|
||||
.igny8-module-section h4 {
|
||||
margin: 0 0 12px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-module-section p {
|
||||
margin: 0 0 15px 0;
|
||||
color: #6b7280;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.igny8-module-section ul {
|
||||
margin: 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.igny8-module-section li {
|
||||
margin-bottom: 8px;
|
||||
color: #374151;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.igny8-ai-features {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-ai-feature {
|
||||
background: #f8fafc;
|
||||
padding: 25px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #8b5cf6;
|
||||
}
|
||||
|
||||
.igny8-ai-feature h4 {
|
||||
margin: 0 0 12px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-ai-feature p {
|
||||
margin: 0 0 15px 0;
|
||||
color: #6b7280;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.igny8-best-practices {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-practice-category {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #10b981;
|
||||
}
|
||||
|
||||
.igny8-practice-category h4 {
|
||||
margin: 0 0 15px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-troubleshooting {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.igny8-issue-category {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #ef4444;
|
||||
}
|
||||
|
||||
.igny8-issue-category h4 {
|
||||
margin: 0 0 15px 0;
|
||||
color: #1f2937;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.igny8-issue {
|
||||
background: white;
|
||||
padding: 15px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 15px;
|
||||
border-left: 3px solid #f59e0b;
|
||||
}
|
||||
|
||||
.igny8-support-resources {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.igny8-support-item {
|
||||
background: #f8fafc;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
border-left: 4px solid #3b82f6;
|
||||
}
|
||||
|
||||
.igny8-support-item h4 {
|
||||
margin: 0 0 10px 0;
|
||||
color: #1f2937;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.igny8-support-item p {
|
||||
margin: 0;
|
||||
color: #6b7280;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.igny8-card-header-content {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.igny8-step-header {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.igny8-module-overview,
|
||||
.igny8-ai-features,
|
||||
.igny8-best-practices,
|
||||
.igny8-troubleshooting {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
// Capture page content
|
||||
$igny8_page_content = ob_get_clean();
|
||||
|
||||
// Include global layout
|
||||
include plugin_dir_path(__FILE__) . '../../core/global-layout.php';
|
||||
?>
|
||||
329
igny8-ai-seo-wp-plugin/modules/help/system-testing.php
Normal file
329
igny8-ai-seo-wp-plugin/modules/help/system-testing.php
Normal file
@@ -0,0 +1,329 @@
|
||||
<?php
|
||||
/**
|
||||
* ==========================
|
||||
* 🔐 IGNY8 FILE RULE HEADER
|
||||
* ==========================
|
||||
* @file : system-testing.php
|
||||
* @location : /modules/help/system-testing.php
|
||||
* @type : Admin Page
|
||||
* @scope : Module Only
|
||||
* @allowed : System testing, functionality verification, debugging tools
|
||||
* @reusability : Single Use
|
||||
* @notes : System testing interface for help module
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Dev-only access guard
|
||||
if (!defined('IGNY8_DEV') || IGNY8_DEV !== true) {
|
||||
return;
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="notice notice-info">
|
||||
<p><strong>Testing Interface:</strong> Basic functionality verification for taxonomy, schema, and UI components.</p>
|
||||
</div>
|
||||
|
||||
<div class="igny8-test-container" style="display: flex; gap: 20px; margin-top: 20px;">
|
||||
|
||||
<!-- Schema Tests -->
|
||||
<div class="igny8-test-section" style="flex: 1; border: 1px solid #ddd; padding: 20px; border-radius: 5px;">
|
||||
<h2>Database Schema Tests</h2>
|
||||
|
||||
<div class="test-buttons">
|
||||
<button class="button button-primary" onclick="testDatabaseConnection()">Test DB Connection</button>
|
||||
<button class="button" onclick="testTableExists()">Check Tables</button>
|
||||
<button class="button" onclick="testSchemaIntegrity()">Schema Integrity</button>
|
||||
</div>
|
||||
|
||||
<div id="schema-results" class="test-results" style="margin-top: 15px; padding: 10px; background: #f9f9f9; border-radius: 3px; min-height: 100px;">
|
||||
<p><em>Click a test button to see results...</em></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Taxonomy Tests -->
|
||||
<div class="igny8-test-section" style="flex: 1; border: 1px solid #ddd; padding: 20px; border-radius: 5px;">
|
||||
<h2>Taxonomy Tests</h2>
|
||||
|
||||
<div class="test-buttons">
|
||||
<button class="button button-primary" onclick="testTaxonomyRegistration()">Test Taxonomy</button>
|
||||
<button class="button" onclick="testCreateTerm()">Create Test Term</button>
|
||||
<button class="button" onclick="testTermQueries()">Query Terms</button>
|
||||
</div>
|
||||
|
||||
<div id="taxonomy-results" class="test-results" style="margin-top: 15px; padding: 10px; background: #f9f9f9; border-radius: 3px; min-height: 100px;">
|
||||
<p><em>Click a test button to see results...</em></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AJAX Tests -->
|
||||
<div class="igny8-test-section" style="flex: 1; border: 1px solid #ddd; padding: 20px; border-radius: 5px;">
|
||||
<h2>AJAX & API Tests</h2>
|
||||
|
||||
<div class="test-buttons">
|
||||
<button class="button button-primary" onclick="testAjaxConnection()">Test AJAX</button>
|
||||
<button class="button" onclick="testTableData()">Load Table Data</button>
|
||||
<button class="button" onclick="testWorkflowTriggers()">Test Workflows</button>
|
||||
</div>
|
||||
|
||||
<div id="ajax-results" class="test-results" style="margin-top: 15px; padding: 10px; background: #f9f9f9; border-radius: 3px; min-height: 100px;">
|
||||
<p><em>Click a test button to see results...</em></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Record Test -->
|
||||
<div style="margin-top: 30px; border: 1px solid #ddd; padding: 20px; border-radius: 5px;">
|
||||
<h2>Quick Record Test</h2>
|
||||
<p>Test basic record operations:</p>
|
||||
|
||||
<div style="display: flex; gap: 10px; align-items: center; margin-top: 10px;">
|
||||
<input type="text" id="test-record-name" placeholder="Test record name" value="Test Record <?php echo date('Y-m-d H:i:s'); ?>" style="flex: 1;">
|
||||
<button class="button button-primary" onclick="createTestRecord()">Create Test Record</button>
|
||||
<button class="button" onclick="listTestRecords()">List Records</button>
|
||||
<button class="button" onclick="clearTestRecords()" style="color: #d63638;">Clear All</button>
|
||||
</div>
|
||||
|
||||
<div id="record-results" class="test-results" style="margin-top: 15px; padding: 10px; background: #f9f9f9; border-radius: 3px; min-height: 50px;">
|
||||
<p><em>Create or list records to see results...</em></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Test functions
|
||||
function testDatabaseConnection() {
|
||||
updateResults('schema-results', 'Testing database connection...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_db_connection&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('schema-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('schema-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testTableExists() {
|
||||
updateResults('schema-results', 'Checking table existence...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_table_exists&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('schema-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('schema-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testSchemaIntegrity() {
|
||||
updateResults('schema-results', 'Testing schema integrity...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_schema_integrity&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('schema-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('schema-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testTaxonomyRegistration() {
|
||||
updateResults('taxonomy-results', 'Testing taxonomy registration...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_taxonomy&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('taxonomy-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('taxonomy-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testCreateTerm() {
|
||||
updateResults('taxonomy-results', 'Creating test term...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_create_term&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('taxonomy-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('taxonomy-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testTermQueries() {
|
||||
updateResults('taxonomy-results', 'Querying terms...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_term_queries&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('taxonomy-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('taxonomy-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testAjaxConnection() {
|
||||
updateResults('ajax-results', 'Testing AJAX connection...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_ajax&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('ajax-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('ajax-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testTableData() {
|
||||
updateResults('ajax-results', 'Testing table data loading...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_get_table_data&nonce=' + igny8_ajax.nonce + '&table=planner_keywords&page=1&per_page=5'
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('ajax-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('ajax-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function testWorkflowTriggers() {
|
||||
updateResults('ajax-results', 'Testing workflow triggers...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_workflows&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('ajax-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('ajax-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function createTestRecord() {
|
||||
const name = document.getElementById('test-record-name').value;
|
||||
if (!name.trim()) {
|
||||
updateResults('record-results', 'Please enter a record name', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
updateResults('record-results', 'Creating test record...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_create_record&nonce=' + igny8_ajax.nonce + '&name=' + encodeURIComponent(name)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('record-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('record-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function listTestRecords() {
|
||||
updateResults('record-results', 'Listing test records...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_list_records&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('record-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('record-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function clearTestRecords() {
|
||||
if (!confirm('Are you sure you want to clear all test records?')) return;
|
||||
|
||||
updateResults('record-results', 'Clearing test records...', 'info');
|
||||
|
||||
fetch(ajaxurl, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
|
||||
body: 'action=igny8_test_clear_records&nonce=' + igny8_ajax.nonce
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
updateResults('record-results', JSON.stringify(data, null, 2), data.success ? 'success' : 'error');
|
||||
})
|
||||
.catch(error => {
|
||||
updateResults('record-results', 'Error: ' + error.message, 'error');
|
||||
});
|
||||
}
|
||||
|
||||
function updateResults(elementId, content, type) {
|
||||
const element = document.getElementById(elementId);
|
||||
const timestamp = new Date().toLocaleTimeString();
|
||||
const prefix = type === 'success' ? '✅' : type === 'error' ? '❌' : 'ℹ️';
|
||||
|
||||
element.innerHTML = `<div style="margin-bottom: 10px;"><strong>${prefix} [${timestamp}]</strong></div><pre style="white-space: pre-wrap; font-size: 12px;">${content}</pre>`;
|
||||
|
||||
if (type === 'success') {
|
||||
element.style.borderLeft = '4px solid #00a32a';
|
||||
} else if (type === 'error') {
|
||||
element.style.borderLeft = '4px solid #d63638';
|
||||
} else {
|
||||
element.style.borderLeft = '4px solid #0073aa';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
// Note: This file is included by help.php, so no need to capture content or include layout
|
||||
// The content will be captured by the parent help.php file
|
||||
?>
|
||||
Reference in New Issue
Block a user