11 KiB
WordPress Plugin Sync Fix - Deployment Checklist
Version: 1.0
Date: November 22, 2025
Risk Level: Low (Non-breaking changes)
Pre-Deployment
Code Review
-
Review changes in
includes/functions.php- Enhanced
igny8_sync_site_structure_to_backend()function - Better error handling and response parsing
- Added platform filter to API query
- Improved debug logging
- Enhanced
-
Review changes in
admin/class-admin.php- User feedback messages added
- Non-blocking approach maintained
- Connection still succeeds even if sync fails
-
Review changes in
includes/class-igny8-api.php- POST request debug logging added
- Respects WP_DEBUG and IGNY8_DEBUG flags
- Token refresh logic preserved
-
Review new test file
tests/test-sync-structure.php- Diagnostic script for troubleshooting
- Can be run standalone
-
Review documentation
SYNC-FIX-REPORT.md- Technical detailsSYNC-FIX-EXECUTIVE-SUMMARY.md- OverviewSYNC-DATA-FLOW-DIAGRAM.md- Data flow visual- This checklist - Deployment guide
Backup
-
Backup WordPress database
- Command:
wp db export backup-$(date +%s).sql - Location: Keep in safe place
- Command:
-
Backup IGNY8 backend database
- PostgreSQL:
pg_dump igny8_production > backup-$(date +%s).sql - Or Docker:
docker exec igny8_db pg_dump -U postgres igny8_production > backup.sql
- PostgreSQL:
-
Backup current plugin files
- Command:
tar -czf plugin-backup-$(date +%s).tar.gz includes/ admin/ sync/
- Command:
-
Document current state
- Note any active integrations
- Document any custom configurations
Testing Environment
-
Set up staging environment
- Fresh copy of WordPress
- Fresh copy of IGNY8 backend
- Sufficient test data
-
Verify test environment is isolated
- Different database
- Different API endpoints (if possible)
- No production data
Staging Deployment
Deploy Code
-
Copy modified files to staging WordPress:
cp includes/functions.php staging-wp/wp-content/plugins/igny8-bridge/includes/ cp admin/class-admin.php staging-wp/wp-content/plugins/igny8-bridge/admin/ cp includes/class-igny8-api.php staging-wp/wp-content/plugins/igny8-bridge/includes/ -
Copy test file:
cp tests/test-sync-structure.php staging-wp/wp-content/plugins/igny8-bridge/tests/ -
Verify plugin is still active:
wp plugin list | grep igny8-bridge
Configure Debug Logging (Staging Only)
-
Enable WordPress debug logging in
wp-config.php:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('IGNY8_DEBUG', true); -
Verify log file exists:
ls -la wp-content/debug.log
Functional Testing
-
Test 1: Connection
- Go to WordPress Admin → Settings → IGNY8 API
- Enter credentials and click "Connect to IGNY8"
- Verify: Success message appears
- Verify: "Site structure synced" message appears (or "will be retried")
-
Test 2: Debug Logging
- Check
wp-content/debug.log:tail -50 wp-content/debug.log | grep IGNY8 - Should see:
- "Sending structure sync to endpoint..."
- "DEBUG POST: .../update-structure/"
- "DEBUG POST RESPONSE: Status=200"
- "Site structure synced successfully"
- Check
-
Test 3: Backend Storage
- Run Django shell:
docker exec -it igny8_backend python manage.py shell - Check storage:
from igny8_core.business.integration.models import SiteIntegration si = SiteIntegration.objects.filter(platform='wordpress').first() print(si.config_json.get('content_types', {}).keys()) # Should show: dict_keys(['post_types', 'taxonomies', 'last_structure_fetch'])
- Run Django shell:
-
Test 4: Frontend Display
- Navigate to Site Settings → Content Types tab
- Verify display shows:
- Post Types section
- Taxonomies section
- Counts for each item
- "Structure last fetched" timestamp
-
Test 5: Diagnostic Script
- Run test script:
wp eval-file tests/test-sync-structure.php - Verify: All tests pass (6/6 ✅)
- Run test script:
-
Test 6: Error Scenarios
- Disable backend temporarily
- Try to connect
- Verify: Connection fails with clear error
- Verify: Debug log shows connection error
- Re-enable backend
- Try connection again
- Verify: Works correctly
- Disable backend temporarily
-
Test 7: Cron Job
- Check if daily cron is scheduled:
wp cron event list | grep igny8_sync_site_structure - Manually trigger it:
wp cron test # or wp cron event run igny8_sync_site_structure - Verify: Logs show successful sync
- Check if daily cron is scheduled:
-
Test 8: Multiple Sites
- If applicable, test with multiple WordPress sites connected
- Verify: Each shows correct post types/taxonomies
- Verify: No data leakage between sites
Performance Testing
-
Load test: Multiple simultaneous sync requests
- No timeouts
- No memory issues
- Database performs well
-
Monitor resources during sync:
- CPU usage reasonable
- Memory stable
- No database locks
Security Review
-
Verify API credentials not logged:
- Check debug log
- Authorization headers masked (Bearer ***)
- API keys not exposed
-
Verify access control:
- Only authenticated users can trigger sync
- Only owners can see their site data
- Cross-site access denied
Regression Testing
- Verify existing functionality still works:
- Plugin connection (original method)
- Manual sync buttons
- Post sync operations
- Taxonomy sync operations
- Webhook handling
Staging Sign-Off
- QA approval: ✅ or ❌
- If issues found:
- Document issue
- Fix code
- Re-test
- Return to staging sign-off
Production Deployment
Pre-Deployment Confirmation
- Staging tests passed
- QA sign-off obtained
- Stakeholders notified
- Maintenance window scheduled (if needed)
- Rollback plan documented
Deploy to Production
-
Timing: Deploy during low-traffic period
-
Method 1: FTP/SFTP
scp -r includes/ admin/ sync/ user@prod-server:wp-content/plugins/igny8-bridge/ -
Method 2: Git Deploy
cd /var/www/html/wp-content/plugins/igny8-bridge/ git pull origin main -
Method 3: WordPress Admin
- Upload plugin zip file
- Click "Install"
- Activate plugin
Verify Deployment
-
Plugin still active:
wp plugin list | grep igny8-bridge -
No PHP errors:
grep -i "fatal\|error" wp-content/debug.log | tail -20 -
Files in correct locations:
ls -la wp-content/plugins/igny8-bridge/includes/class-igny8-api.php ls -la wp-content/plugins/igny8-bridge/admin/class-admin.php ls -la wp-content/plugins/igny8-bridge/includes/functions.php
Smoke Tests (Production)
-
Verify connection still works
- Test with staging IGNY8 account first (if possible)
- Then test with production account
-
Check debug logs:
tail -30 wp-content/debug.log | grep IGNY8 -
Verify frontend displays content types
- Check multiple sites if applicable
- Verify counts are correct
-
Check that no errors in logs:
grep -i "error" wp-content/debug.log | tail -10
Monitoring (First 24 Hours)
-
Hour 0-1: Active monitoring
- Check debug logs every 10 minutes
- Monitor error rates
- Watch for user complaints
-
Hour 1-6: Periodic checks
- Check logs every 30 minutes
- Verify syncs completing
- Monitor performance metrics
-
Hour 6-24: Daily monitoring
- Check logs at start, middle, end of day
- Verify cron jobs running
- Monitor for anomalies
Issues During Deployment
If issues arise:
- Do not panic - Changes are non-breaking
- Collect information:
- Screenshots of errors
- Debug log excerpts (last 100 lines)
- Browser console errors
- Backend logs
- Create incident ticket
- Decide: Fix or rollback?
Rollback Plan (If Needed)
-
Restore from backup:
cp plugin-backup-*.tar.gz current.tar.gz tar -xzf current.tar.gz -C wp-content/plugins/igny8-bridge/ -
Clear any caches:
wp cache flush -
Test connection again:
- Should revert to previous behavior
- May need to re-connect plugin
-
Notify stakeholders:
- Rollback was performed
- Feature postponed
- New deployment planned
Post-Deployment
Documentation
-
Update deployment log:
- Version deployed
- Date/time
- Any issues encountered
- Resolution steps
-
Update team documentation:
- Point to
SYNC-FIX-REPORT.md - Share
SYNC-DATA-FLOW-DIAGRAM.md - Add to internal knowledge base
- Point to
-
Create support guide:
- How to verify sync is working
- Common issues and solutions
- Who to contact for support
Team Communication
-
Notify development team:
- Deployment completed successfully
- Link to documentation
- Invite questions
-
Notify product team:
- Feature is now active
- Users can see Content Types tab
- Daily sync is automatic
-
Notify support team:
- How to troubleshoot issues
- Where to find logs
- Escalation path
Cleanup
-
Disable WP_DEBUG if enabled:
define('WP_DEBUG', false); define('WP_DEBUG_LOG', false); define('IGNY8_DEBUG', false); -
Clear debug logs (optional):
rm wp-content/debug.log -
Clear cache:
wp cache flush -
Archive backup files:
- Keep backups for 30 days minimum
- Document backup locations
Success Criteria
✅ Deployment successful if:
- No PHP errors in logs
- Plugin connections working
- Frontend shows Content Types
- Debug logs show sync messages
- Users report success
- No performance degradation
- Cron jobs running
- No security issues
Sign-Off
| Role | Name | Signature | Date |
|---|---|---|---|
| Developer | |||
| QA | |||
| DevOps | |||
| Product |
Support Contact
For issues during/after deployment:
- Development Team: [contact info]
- DevOps Team: [contact info]
- Support Team: [contact info]
Appendix
Useful Commands
Check plugin status:
wp plugin list | grep igny8
View error logs:
tail -100 wp-content/debug.log
Test connection manually:
wp eval-file tests/test-sync-structure.php
Force sync:
wp cron event run igny8_sync_site_structure
Check backend integration:
docker exec igny8_backend python manage.py shell
from igny8_core.business.integration.models import SiteIntegration
SiteIntegration.objects.filter(platform='wordpress').count()
Restart WordPress (if needed):
# Clear caches
wp cache flush
wp rewrite flush
Last Updated: November 22, 2025
Next Review: December 2025