@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.
- package/augment-extensions/domain-rules/wordpress/README.md +163 -0
- package/augment-extensions/domain-rules/wordpress/module.json +32 -0
- package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
- package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
- package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
- package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
- package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
- package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
- package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
- package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
- package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
- package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
- package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
- package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
- package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
- package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
- package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
- package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
- package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
- package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
- package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
- package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
- package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
- package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
- package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
- package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
- package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
- package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
- package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
- package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
- package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
- package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
- package/cli/dist/cli.js +5 -1
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +41 -0
- package/cli/dist/commands/show.js.map +1 -1
- package/modules.md +52 -0
- 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
|
+
|