@mytechtoday/augment-extensions 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/augment-extensions/domain-rules/wordpress/README.md +163 -0
  2. package/augment-extensions/domain-rules/wordpress/module.json +32 -0
  3. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
  4. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
  5. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
  6. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
  7. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
  8. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
  9. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
  10. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
  11. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
  12. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
  13. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
  14. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
  15. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
  16. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
  17. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
  18. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
  19. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
  20. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
  21. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
  22. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
  23. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
  24. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
  25. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
  26. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
  27. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
  28. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
  29. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
  30. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
  31. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
  32. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
  33. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
  34. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
  35. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
  36. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
  37. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
  38. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
  39. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
  40. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
  41. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
  42. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
  43. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
  44. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
  45. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
  46. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
  47. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
  48. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
  49. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
  50. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
  51. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
  52. package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
  53. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
  54. package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
  55. package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
  56. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
  57. package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
  58. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
  59. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
  60. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
  61. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
  62. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
  63. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
  64. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
  65. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
  66. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
  67. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
  68. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
  69. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
  70. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
  71. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
  72. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
  73. package/cli/dist/cli.js +5 -1
  74. package/cli/dist/cli.js.map +1 -1
  75. package/cli/dist/commands/show.d.ts.map +1 -1
  76. package/cli/dist/commands/show.js +41 -0
  77. package/cli/dist/commands/show.js.map +1 -1
  78. package/modules.md +52 -0
  79. package/package.json +1 -1
@@ -0,0 +1,667 @@
1
+ # Migration Workflows for WordPress Plugins
2
+
3
+ ## Overview
4
+
5
+ This guide covers migration workflows for WordPress plugins including WordPress core upgrades, PHP version upgrades, theme migration, and plugin migration. Each workflow includes backup procedures and comprehensive testing steps.
6
+
7
+ ---
8
+
9
+ ## 1. WordPress Core Upgrade Workflow
10
+
11
+ ### Pre-Upgrade Checklist
12
+
13
+ **Before upgrading WordPress core:**
14
+
15
+ 1. **Check compatibility**:
16
+ ```bash
17
+ # Check plugin compatibility with target WordPress version
18
+ # Review plugin's "Tested up to" version in readme.txt
19
+ # Check WordPress.org plugin page for compatibility reports
20
+ ```
21
+
22
+ 2. **Review changelog**:
23
+ - Read WordPress release notes
24
+ - Identify deprecated functions
25
+ - Check for breaking changes
26
+ - Review security updates
27
+
28
+ 3. **Backup everything**:
29
+ ```bash
30
+ # Database backup
31
+ wp db export backup-$(date +%Y%m%d-%H%M%S).sql
32
+
33
+ # Files backup
34
+ tar -czf wordpress-backup-$(date +%Y%m%d-%H%M%S).tar.gz /path/to/wordpress
35
+ ```
36
+
37
+ ### Upgrade Process
38
+
39
+ **Step 1: Test in staging environment**
40
+
41
+ ```bash
42
+ # Clone production to staging
43
+ wp db export production.sql
44
+ wp db import production.sql --url=staging.example.com
45
+
46
+ # Update WordPress core in staging
47
+ wp core update
48
+ wp core update-db
49
+ ```
50
+
51
+ **Step 2: Test plugin functionality**
52
+
53
+ - ✅ Activate plugin
54
+ - ✅ Test all features
55
+ - ✅ Check admin interface
56
+ - ✅ Test frontend functionality
57
+ - ✅ Verify AJAX handlers
58
+ - ✅ Test REST API endpoints
59
+ - ✅ Check cron jobs
60
+ - ✅ Verify database queries
61
+
62
+ **Step 3: Fix compatibility issues**
63
+
64
+ ```php
65
+ // Example: Replace deprecated function
66
+ // OLD (deprecated in WP 5.3)
67
+ wp_make_link_relative( $url );
68
+
69
+ // NEW
70
+ wp_parse_url( $url, PHP_URL_PATH );
71
+ ```
72
+
73
+ **Step 4: Update production**
74
+
75
+ ```bash
76
+ # Backup production
77
+ wp db export pre-upgrade-backup.sql
78
+
79
+ # Enable maintenance mode
80
+ wp maintenance-mode activate
81
+
82
+ # Update WordPress core
83
+ wp core update
84
+ wp core update-db
85
+
86
+ # Test critical functionality
87
+ wp plugin list
88
+ wp theme list
89
+
90
+ # Disable maintenance mode
91
+ wp maintenance-mode deactivate
92
+ ```
93
+
94
+ ### Post-Upgrade Testing
95
+
96
+ **Critical tests after upgrade:**
97
+
98
+ 1. **Plugin activation**: Verify plugin activates without errors
99
+ 2. **Database integrity**: Check custom tables and data
100
+ 3. **Admin functionality**: Test all admin pages and settings
101
+ 4. **Frontend functionality**: Test shortcodes, widgets, blocks
102
+ 5. **Performance**: Check page load times
103
+ 6. **Error logs**: Review PHP error logs and debug.log
104
+
105
+ ---
106
+
107
+ ## 2. PHP Version Upgrade Workflow
108
+
109
+ ### Pre-Upgrade Checklist
110
+
111
+ **Before upgrading PHP version:**
112
+
113
+ 1. **Check current PHP version**:
114
+ ```bash
115
+ php -v
116
+ wp cli info
117
+ ```
118
+
119
+ 2. **Review PHP compatibility**:
120
+ - Check plugin's "Requires PHP" version in readme.txt
121
+ - Review PHP changelog for breaking changes
122
+ - Identify deprecated PHP features used in plugin
123
+
124
+ 3. **Run compatibility checker**:
125
+ ```bash
126
+ # Install PHP Compatibility Checker plugin
127
+ wp plugin install php-compatibility-checker --activate
128
+
129
+ # Or use PHPCompatibility CodeSniffer standard
130
+ composer require --dev phpcompatibility/php-compatibility
131
+ vendor/bin/phpcs -p . --standard=PHPCompatibility --runtime-set testVersion 7.4-
132
+ ```
133
+
134
+ ### Common PHP Compatibility Issues
135
+
136
+ **PHP 7.4 → PHP 8.0+**
137
+
138
+ ```php
139
+ // Issue 1: Deprecated curly brace array access
140
+ // OLD
141
+ $char = $string{0};
142
+
143
+ // NEW
144
+ $char = $string[0];
145
+
146
+ // Issue 2: Required parameters after optional parameters
147
+ // OLD
148
+ function example( $optional = null, $required ) {}
149
+
150
+ // NEW
151
+ function example( $required, $optional = null ) {}
152
+
153
+ // Issue 3: Deprecated create_function()
154
+ // OLD
155
+ $func = create_function( '$a,$b', 'return $a + $b;' );
156
+
157
+ // NEW
158
+ $func = function( $a, $b ) {
159
+ return $a + $b;
160
+ };
161
+ ```
162
+
163
+ ### Upgrade Process
164
+
165
+ **Step 1: Test in staging with target PHP version**
166
+
167
+ ```bash
168
+ # Switch PHP version in staging (example for Ubuntu)
169
+ sudo update-alternatives --set php /usr/bin/php8.1
170
+
171
+ # Restart web server
172
+ sudo systemctl restart apache2 # or nginx
173
+ ```
174
+
175
+ **Step 2: Run automated tests**
176
+
177
+ ```bash
178
+ # Run PHPUnit tests
179
+ vendor/bin/phpunit
180
+
181
+ # Run PHP CodeSniffer
182
+ vendor/bin/phpcs
183
+
184
+ # Check for PHP errors
185
+ tail -f /var/log/php-errors.log
186
+ ```
187
+
188
+ **Step 3: Manual testing**
189
+
190
+ - ✅ Test all plugin features
191
+ - ✅ Check error logs
192
+ - ✅ Verify database operations
193
+ - ✅ Test file uploads
194
+ - ✅ Check email functionality
195
+ - ✅ Test third-party integrations
196
+
197
+ **Step 4: Update production**
198
+
199
+ ```bash
200
+ # Backup production
201
+ wp db export pre-php-upgrade-backup.sql
202
+
203
+ # Enable maintenance mode
204
+ wp maintenance-mode activate
205
+
206
+ # Switch PHP version
207
+ sudo update-alternatives --set php /usr/bin/php8.1
208
+ sudo systemctl restart apache2
209
+
210
+ # Test
211
+ wp cli info # Verify PHP version
212
+ wp plugin list # Verify plugins load
213
+
214
+ # Disable maintenance mode
215
+ wp maintenance-mode deactivate
216
+ ```
217
+
218
+ ### Post-Upgrade Monitoring
219
+
220
+ **Monitor for 24-48 hours:**
221
+
222
+ 1. **Error logs**: Check PHP error logs frequently
223
+ 2. **Performance**: Monitor page load times
224
+ 3. **User reports**: Watch for user-reported issues
225
+ 4. **Database**: Check for query errors
226
+ 5. **Cron jobs**: Verify scheduled tasks run correctly
227
+
228
+ ---
229
+
230
+ ## 3. Theme Migration Workflow
231
+
232
+ ### Scenario: Migrating Plugin from One Theme to Another
233
+
234
+ **Common issues when switching themes:**
235
+
236
+ - Custom post type templates
237
+ - Widget areas
238
+ - Shortcode styling
239
+ - Theme-specific hooks
240
+ - CSS conflicts
241
+
242
+ ### Pre-Migration Checklist
243
+
244
+ 1. **Document theme dependencies**:
245
+ ```php
246
+ // Check if plugin relies on theme features
247
+ if ( ! current_theme_supports( 'post-thumbnails' ) ) {
248
+ add_theme_support( 'post-thumbnails' );
249
+ }
250
+ ```
251
+
252
+ 2. **Identify theme-specific code**:
253
+ - Custom templates in plugin
254
+ - Theme hook usage
255
+ - Widget area registrations
256
+ - Shortcode styling
257
+
258
+ 3. **Backup current state**:
259
+ ```bash
260
+ wp db export pre-theme-migration.sql
261
+ wp theme list
262
+ ```
263
+
264
+ ### Migration Process
265
+
266
+ **Step 1: Test in staging**
267
+
268
+ ```bash
269
+ # Clone production to staging
270
+ wp db export production.sql
271
+ wp db import production.sql --url=staging.example.com
272
+
273
+ # Activate new theme
274
+ wp theme activate new-theme
275
+ ```
276
+
277
+ **Step 2: Update plugin templates**
278
+
279
+ ```php
280
+ // OLD: Theme-specific template
281
+ locate_template( 'my-plugin-template.php' );
282
+
283
+ // NEW: Plugin-provided template with theme override support
284
+ if ( $theme_file = locate_template( 'my-plugin/template.php' ) ) {
285
+ include $theme_file;
286
+ } else {
287
+ include plugin_dir_path( __FILE__ ) . 'templates/template.php';
288
+ }
289
+ ```
290
+
291
+ **Step 3: Update CSS for new theme**
292
+
293
+ ```php
294
+ // Enqueue plugin styles with theme compatibility
295
+ function myplugin_enqueue_styles() {
296
+ wp_enqueue_style(
297
+ 'myplugin-styles',
298
+ plugins_url( 'css/styles.css', __FILE__ ),
299
+ array(), // Dependencies
300
+ '1.0.0'
301
+ );
302
+
303
+ // Add theme-specific overrides
304
+ $theme = wp_get_theme();
305
+ $theme_slug = $theme->get_stylesheet();
306
+
307
+ $theme_override = plugins_url( "css/themes/{$theme_slug}.css", __FILE__ );
308
+ if ( file_exists( plugin_dir_path( __FILE__ ) . "css/themes/{$theme_slug}.css" ) ) {
309
+ wp_enqueue_style(
310
+ 'myplugin-theme-override',
311
+ $theme_override,
312
+ array( 'myplugin-styles' ),
313
+ '1.0.0'
314
+ );
315
+ }
316
+ }
317
+ add_action( 'wp_enqueue_scripts', 'myplugin_enqueue_styles' );
318
+ ```
319
+
320
+ **Step 4: Test all functionality**
321
+
322
+ - ✅ Custom post type archives
323
+ - ✅ Single post templates
324
+ - ✅ Widget areas
325
+ - ✅ Shortcodes
326
+ - ✅ Gutenberg blocks
327
+ - ✅ Frontend forms
328
+ - ✅ AJAX functionality
329
+
330
+ **Step 5: Update production**
331
+
332
+ ```bash
333
+ # Backup production
334
+ wp db export pre-theme-switch.sql
335
+
336
+ # Enable maintenance mode
337
+ wp maintenance-mode activate
338
+
339
+ # Switch theme
340
+ wp theme activate new-theme
341
+
342
+ # Clear caches
343
+ wp cache flush
344
+ wp rewrite flush
345
+
346
+ # Disable maintenance mode
347
+ wp maintenance-mode deactivate
348
+ ```
349
+
350
+ ---
351
+
352
+ ## 4. Plugin Migration Workflow
353
+
354
+ ### Scenario: Migrating Plugin to New Server/Environment
355
+
356
+ **Common migration scenarios:**
357
+
358
+ - Development → Staging → Production
359
+ - Shared hosting → VPS → Cloud
360
+ - HTTP → HTTPS
361
+ - Domain change
362
+
363
+ ### Pre-Migration Checklist
364
+
365
+ 1. **Document current environment**:
366
+ ```bash
367
+ # WordPress version
368
+ wp core version
369
+
370
+ # PHP version
371
+ php -v
372
+
373
+ # Database version
374
+ wp db query "SELECT VERSION();"
375
+
376
+ # Active plugins
377
+ wp plugin list --status=active
378
+
379
+ # Server configuration
380
+ wp cli info
381
+ ```
382
+
383
+ 2. **Check plugin requirements**:
384
+ - PHP version compatibility
385
+ - Required PHP extensions
386
+ - Database requirements
387
+ - File permissions
388
+ - Server resources (memory, execution time)
389
+
390
+ 3. **Backup everything**:
391
+ ```bash
392
+ # Full site backup
393
+ wp db export full-backup-$(date +%Y%m%d).sql
394
+ tar -czf files-backup-$(date +%Y%m%d).tar.gz /path/to/wordpress
395
+ ```
396
+
397
+ ### Migration Process
398
+
399
+ **Step 1: Prepare target environment**
400
+
401
+ ```bash
402
+ # Install WordPress
403
+ wp core download
404
+ wp config create --dbname=newdb --dbuser=newuser --dbpass=newpass
405
+ wp core install --url=newsite.com --title="New Site" --admin_user=admin
406
+
407
+ # Match PHP version
408
+ php -v # Verify matches source
409
+
410
+ # Install required PHP extensions
411
+ sudo apt-get install php-curl php-gd php-mbstring php-xml php-zip
412
+ ```
413
+
414
+ **Step 2: Migrate database**
415
+
416
+ ```bash
417
+ # Export from source
418
+ wp db export migration.sql
419
+
420
+ # Import to target
421
+ wp db import migration.sql
422
+
423
+ # Update URLs (if domain changed)
424
+ wp search-replace 'oldsite.com' 'newsite.com' --all-tables
425
+
426
+ # Update file paths (if path changed)
427
+ wp search-replace '/old/path' '/new/path' --all-tables
428
+ ```
429
+
430
+ **Step 3: Migrate files**
431
+
432
+ ```bash
433
+ # Copy plugin files
434
+ rsync -avz /old/wp-content/plugins/my-plugin/ /new/wp-content/plugins/my-plugin/
435
+
436
+ # Set correct permissions
437
+ find /new/wp-content/plugins/my-plugin -type d -exec chmod 755 {} \;
438
+ find /new/wp-content/plugins/my-plugin -type f -exec chmod 644 {} \;
439
+ ```
440
+
441
+ **Step 4: Update plugin configuration**
442
+
443
+ ```php
444
+ // Update plugin settings for new environment
445
+ function myplugin_migration_update_settings() {
446
+ $options = get_option( 'myplugin_options' );
447
+
448
+ // Update URLs
449
+ if ( isset( $options['api_url'] ) ) {
450
+ $options['api_url'] = str_replace(
451
+ 'oldsite.com',
452
+ 'newsite.com',
453
+ $options['api_url']
454
+ );
455
+ }
456
+
457
+ // Update file paths
458
+ if ( isset( $options['upload_dir'] ) ) {
459
+ $options['upload_dir'] = str_replace(
460
+ '/old/path',
461
+ '/new/path',
462
+ $options['upload_dir']
463
+ );
464
+ }
465
+
466
+ update_option( 'myplugin_options', $options );
467
+ }
468
+ ```
469
+
470
+ **Step 5: Test thoroughly**
471
+
472
+ ```bash
473
+ # Verify plugin activation
474
+ wp plugin activate my-plugin
475
+
476
+ # Check for errors
477
+ wp plugin status my-plugin
478
+
479
+ # Test database connectivity
480
+ wp db query "SELECT * FROM {$wpdb->prefix}myplugin_table LIMIT 1;"
481
+
482
+ # Verify cron jobs
483
+ wp cron event list
484
+
485
+ # Test REST API
486
+ curl https://newsite.com/wp-json/myplugin/v1/endpoint
487
+ ```
488
+
489
+ ### Post-Migration Checklist
490
+
491
+ - ✅ Plugin activates without errors
492
+ - ✅ Database tables exist and contain data
493
+ - ✅ Custom post types display correctly
494
+ - ✅ Admin settings pages load
495
+ - ✅ Frontend functionality works
496
+ - ✅ AJAX handlers respond
497
+ - ✅ REST API endpoints accessible
498
+ - ✅ Cron jobs scheduled
499
+ - ✅ File uploads work
500
+ - ✅ Email notifications send
501
+ - ✅ Third-party integrations connect
502
+ - ✅ Performance is acceptable
503
+
504
+ ---
505
+
506
+ ## 5. Rollback Procedures
507
+
508
+ ### Emergency Rollback
509
+
510
+ **If migration fails, rollback immediately:**
511
+
512
+ ```bash
513
+ # 1. Enable maintenance mode
514
+ wp maintenance-mode activate
515
+
516
+ # 2. Restore database
517
+ wp db import pre-migration-backup.sql
518
+
519
+ # 3. Restore files
520
+ tar -xzf files-backup.tar.gz -C /path/to/wordpress
521
+
522
+ # 4. Clear caches
523
+ wp cache flush
524
+ wp rewrite flush
525
+
526
+ # 5. Verify restoration
527
+ wp plugin list
528
+ wp db query "SELECT COUNT(*) FROM wp_posts;"
529
+
530
+ # 6. Disable maintenance mode
531
+ wp maintenance-mode deactivate
532
+ ```
533
+
534
+ ### Partial Rollback
535
+
536
+ **If only plugin needs rollback:**
537
+
538
+ ```bash
539
+ # Deactivate plugin
540
+ wp plugin deactivate my-plugin
541
+
542
+ # Restore plugin files
543
+ rm -rf wp-content/plugins/my-plugin
544
+ tar -xzf plugin-backup.tar.gz -C wp-content/plugins/
545
+
546
+ # Restore plugin database tables
547
+ wp db query < plugin-tables-backup.sql
548
+
549
+ # Reactivate plugin
550
+ wp plugin activate my-plugin
551
+ ```
552
+
553
+ ---
554
+
555
+ ## 6. Best Practices
556
+
557
+ ### Backup Strategy
558
+
559
+ **Always maintain multiple backup points:**
560
+
561
+ 1. **Before migration**: Full backup
562
+ 2. **After testing**: Staging backup
563
+ 3. **Before production**: Production backup
564
+ 4. **After migration**: Post-migration backup
565
+
566
+ ### Testing Strategy
567
+
568
+ **Test in this order:**
569
+
570
+ 1. **Automated tests**: PHPUnit, CodeSniffer
571
+ 2. **Staging environment**: Full functionality test
572
+ 3. **Production (limited)**: Soft launch to subset of users
573
+ 4. **Production (full)**: Full rollout with monitoring
574
+
575
+ ### Communication Strategy
576
+
577
+ **Notify stakeholders:**
578
+
579
+ 1. **Before migration**: Announce maintenance window
580
+ 2. **During migration**: Status updates
581
+ 3. **After migration**: Completion notice
582
+ 4. **Post-migration**: Monitor and respond to issues
583
+
584
+ ### Documentation
585
+
586
+ **Document everything:**
587
+
588
+ - Migration plan
589
+ - Backup locations
590
+ - Configuration changes
591
+ - Issues encountered
592
+ - Rollback procedures
593
+ - Lessons learned
594
+
595
+ ---
596
+
597
+ ## 7. Common Migration Issues
598
+
599
+ ### Issue 1: Database Prefix Mismatch
600
+
601
+ ```php
602
+ // Problem: Hardcoded table prefix
603
+ $results = $wpdb->get_results( "SELECT * FROM wp_myplugin_table" );
604
+
605
+ // Solution: Use $wpdb->prefix
606
+ global $wpdb;
607
+ $table_name = $wpdb->prefix . 'myplugin_table';
608
+ $results = $wpdb->get_results( "SELECT * FROM {$table_name}" );
609
+ ```
610
+
611
+ ### Issue 2: Absolute Path Issues
612
+
613
+ ```php
614
+ // Problem: Hardcoded paths
615
+ include '/var/www/html/wp-content/plugins/my-plugin/includes/class.php';
616
+
617
+ // Solution: Use WordPress constants
618
+ include plugin_dir_path( __FILE__ ) . 'includes/class.php';
619
+ ```
620
+
621
+ ### Issue 3: URL Hardcoding
622
+
623
+ ```php
624
+ // Problem: Hardcoded URLs
625
+ $api_url = 'https://oldsite.com/wp-json/myplugin/v1/';
626
+
627
+ // Solution: Use WordPress functions
628
+ $api_url = rest_url( 'myplugin/v1/' );
629
+ ```
630
+
631
+ ### Issue 4: File Permission Issues
632
+
633
+ ```bash
634
+ # Problem: Incorrect permissions after migration
635
+ # Solution: Set correct permissions
636
+ find wp-content/plugins/my-plugin -type d -exec chmod 755 {} \;
637
+ find wp-content/plugins/my-plugin -type f -exec chmod 644 {} \;
638
+ chown -R www-data:www-data wp-content/plugins/my-plugin
639
+ ```
640
+
641
+ ---
642
+
643
+ ## Summary
644
+
645
+ **Key takeaways:**
646
+
647
+ 1. **Always backup** before any migration
648
+ 2. **Test in staging** before production
649
+ 3. **Document everything** for future reference
650
+ 4. **Have rollback plan** ready
651
+ 5. **Monitor closely** after migration
652
+ 6. **Communicate clearly** with stakeholders
653
+
654
+ **Migration checklist:**
655
+
656
+ - [ ] Backup database and files
657
+ - [ ] Test in staging environment
658
+ - [ ] Document configuration changes
659
+ - [ ] Prepare rollback procedure
660
+ - [ ] Schedule maintenance window
661
+ - [ ] Notify stakeholders
662
+ - [ ] Execute migration
663
+ - [ ] Test thoroughly
664
+ - [ ] Monitor for issues
665
+ - [ ] Document lessons learned
666
+
667
+