5.9 KiB
Phase 5 Implementation Summary
Overview
Phase 5 implementation adds Planner, Linker, and Optimizer module hooks to the WordPress bridge plugin.
Implemented Features
5.1 Planner Briefs Display & Refresh Actions ✅
Files Created:
admin/class-post-meta-boxes.php- Meta boxes for post editoradmin/assets/js/post-editor.js- JavaScript for AJAX interactions
Features:
- Planner Brief Meta Box in post editor sidebar
- Displays cached brief with title, content, outline, keywords, and tone
- Shows cache timestamp
- "Fetch Brief" button to load from IGNY8 API
- "Request Refresh" button to trigger Planner refresh
API Endpoints Used:
GET /planner/tasks/{id}/brief/- Fetch Planner brief (with fallback to Writer brief)POST /planner/tasks/{id}/refresh/- Request Planner task refresh
Meta Fields Added:
_igny8_task_brief- Cached brief data_igny8_brief_cached_at- Brief cache timestamp
AJAX Handlers:
igny8_fetch_planner_brief- Fetches and caches briefigny8_refresh_planner_task- Requests Planner refresh
5.2 Link Graph Export ✅
Files Created:
data/link-graph.php- Link graph extraction and export
Features:
-
Link Extraction from post content
- Extracts all internal links (anchor tags)
- Captures source URL, target URL, and anchor text
- Filters to only internal links (same domain)
- Normalizes URLs for consistency
-
Link Graph Collection
- Processes all enabled post types
- Extracts links from published posts
- Configurable batch processing (max 1000 posts per run)
-
Automatic Export During Site Scans
- Integrated into
igny8_collect_site_data() - Included in site data payload
- Also sent separately to Linker module endpoint
- Integrated into
API Endpoints Used:
POST /linker/link-map/- Send link graph to Linker module
Functions:
igny8_extract_post_links($post_id)- Extract links from single postigny8_extract_link_graph($post_ids)- Extract links from multiple postsigny8_send_link_graph_to_igny8($site_id, $link_graph)- Send to IGNY8 API
Integration Points:
igny8_collect_site_data()- Includes link graph in site dataigny8_send_site_data_to_igny8()- Sends link graph after site importigny8_perform_full_site_scan()- Sends link graph during full scans
Options Stored:
igny8_last_link_graph_sync- Last sync timestampigny8_last_link_graph_count- Number of links sent
5.4 Optimizer Triggers ✅
Features:
- Optimizer Meta Box in post editor sidebar
- Displays current optimizer job ID and status
- "Request Optimization" button to create new job
- "Check Status" button to fetch latest job status
- Shows score changes and recommendations when available
API Endpoints Used:
POST /optimizer/jobs/- Create optimizer jobGET /optimizer/jobs/{id}/- Get optimizer job status
Meta Fields Added:
_igny8_optimizer_job_id- Optimizer job ID_igny8_optimizer_status- Job status (pending, processing, completed, failed)_igny8_optimizer_score_changes- Score changes from optimization_igny8_optimizer_recommendations- Optimization recommendations_igny8_optimizer_job_created_at- Job creation timestamp
AJAX Handlers:
igny8_create_optimizer_job- Creates new optimizer jobigny8_get_optimizer_status- Fetches job status and updates meta
Job Parameters:
post_id- WordPress post IDtask_id- IGNY8 task IDjob_type- Type of job (default: 'audit')priority- Job priority (default: 'normal')
Module Toggle Support
All Phase 5 features respect the module toggle settings:
- Planner module must be enabled for brief fetching/refresh
- Linker module must be enabled for link graph export
- Optimizer module must be enabled for optimizer jobs
Features also check igny8_is_connection_enabled() to ensure sync operations are active.
UI/UX Features
Post Editor Meta Boxes
- Clean, organized display in sidebar
- Real-time AJAX updates
- Success/error message display
- Auto-refresh after operations
- Disabled state when connection is off
JavaScript Enhancements
- Loading states on buttons
- Confirmation dialogs for destructive actions
- Error handling and user feedback
- Non-blocking AJAX requests
Integration with Existing Code
Modified Files:
igny8-bridge.php- Added meta boxes class loadingincludes/functions.php- Added optimizer meta field registrationsdata/site-collection.php- Integrated link graph extraction
New Dependencies:
- None (uses existing Igny8API class)
Testing Checklist
- Planner brief displays correctly in post editor
- Fetch brief button works and caches data
- Request refresh button triggers Planner refresh
- Link graph extraction works on posts with links
- Link graph is included in site scans
- Link graph is sent to Linker endpoint
- Optimizer job creation works
- Optimizer status check works
- All features respect module toggles
- All features respect connection enabled toggle
- Meta boxes only show for posts with task IDs
- Error handling works correctly
Notes
-
Link Graph Processing: Currently limited to 1000 posts per run to prevent timeouts. Can be increased or made configurable.
-
Brief Caching: Briefs are cached in post meta to reduce API calls. Cache can be refreshed manually.
-
Optimizer Jobs: Jobs are created asynchronously. Status must be checked manually or via webhook (Phase 6).
-
Module Dependencies: All features check module enablement before executing.
-
Connection Toggle: All features respect the master connection toggle added earlier.
Next Steps (Phase 6)
Phase 5.3 (Accept link recommendations via webhook) is deferred to Phase 6, which will implement:
- REST endpoint
/wp-json/igny8/v1/eventwith shared secret - Webhook handler for link recommendations
- Link insertion queue system