@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,388 @@
|
|
|
1
|
+
# WordPress Theme Development Workflow
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document provides step-by-step workflows for WordPress theme development, covering both classic and block themes.
|
|
6
|
+
|
|
7
|
+
## Workflow 1: Create New Block Theme
|
|
8
|
+
|
|
9
|
+
### Step 1: Initialize Theme Structure
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Create theme directory
|
|
13
|
+
mkdir wp-content/themes/my-theme
|
|
14
|
+
cd wp-content/themes/my-theme
|
|
15
|
+
|
|
16
|
+
# Create required directories
|
|
17
|
+
mkdir templates parts patterns assets assets/css assets/js
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Step 2: Create Required Files
|
|
21
|
+
|
|
22
|
+
**style.css** (Required):
|
|
23
|
+
```css
|
|
24
|
+
/*
|
|
25
|
+
Theme Name: My Theme
|
|
26
|
+
Theme URI: https://example.com/my-theme
|
|
27
|
+
Author: Your Name
|
|
28
|
+
Author URI: https://example.com
|
|
29
|
+
Description: A modern block theme
|
|
30
|
+
Requires at least: 6.4
|
|
31
|
+
Tested up to: 6.4
|
|
32
|
+
Requires PHP: 7.4
|
|
33
|
+
Version: 1.0.0
|
|
34
|
+
License: GNU General Public License v2 or later
|
|
35
|
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
36
|
+
Text Domain: my-theme
|
|
37
|
+
Tags: block-theme, full-site-editing, custom-colors
|
|
38
|
+
*/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**theme.json** (Required):
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"$schema": "https://schemas.wp.org/trunk/theme.json",
|
|
45
|
+
"version": 2,
|
|
46
|
+
"settings": {
|
|
47
|
+
"appearanceTools": true,
|
|
48
|
+
"layout": {
|
|
49
|
+
"contentSize": "840px",
|
|
50
|
+
"wideSize": "1100px"
|
|
51
|
+
},
|
|
52
|
+
"color": {
|
|
53
|
+
"palette": [
|
|
54
|
+
{
|
|
55
|
+
"slug": "primary",
|
|
56
|
+
"color": "#0073aa",
|
|
57
|
+
"name": "Primary"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"slug": "secondary",
|
|
61
|
+
"color": "#23282d",
|
|
62
|
+
"name": "Secondary"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"slug": "white",
|
|
66
|
+
"color": "#ffffff",
|
|
67
|
+
"name": "White"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"slug": "black",
|
|
71
|
+
"color": "#000000",
|
|
72
|
+
"name": "Black"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"typography": {
|
|
77
|
+
"fontFamilies": [
|
|
78
|
+
{
|
|
79
|
+
"fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",
|
|
80
|
+
"slug": "system-font",
|
|
81
|
+
"name": "System Font"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"fontSizes": [
|
|
85
|
+
{
|
|
86
|
+
"slug": "small",
|
|
87
|
+
"size": "14px",
|
|
88
|
+
"name": "Small"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"slug": "medium",
|
|
92
|
+
"size": "18px",
|
|
93
|
+
"name": "Medium"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"slug": "large",
|
|
97
|
+
"size": "24px",
|
|
98
|
+
"name": "Large"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"slug": "x-large",
|
|
102
|
+
"size": "32px",
|
|
103
|
+
"name": "Extra Large"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"spacing": {
|
|
108
|
+
"units": ["px", "em", "rem", "vh", "vw", "%"]
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"styles": {
|
|
112
|
+
"color": {
|
|
113
|
+
"background": "var(--wp--preset--color--white)",
|
|
114
|
+
"text": "var(--wp--preset--color--black)"
|
|
115
|
+
},
|
|
116
|
+
"typography": {
|
|
117
|
+
"fontFamily": "var(--wp--preset--font-family--system-font)",
|
|
118
|
+
"fontSize": "var(--wp--preset--font-size--medium)",
|
|
119
|
+
"lineHeight": "1.6"
|
|
120
|
+
},
|
|
121
|
+
"spacing": {
|
|
122
|
+
"padding": {
|
|
123
|
+
"top": "0px",
|
|
124
|
+
"right": "0px",
|
|
125
|
+
"bottom": "0px",
|
|
126
|
+
"left": "0px"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**templates/index.html** (Required):
|
|
134
|
+
```html
|
|
135
|
+
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
|
|
136
|
+
|
|
137
|
+
<!-- wp:group {"tagName":"main","layout":{"type":"constrained"}} -->
|
|
138
|
+
<main class="wp-block-group">
|
|
139
|
+
<!-- wp:query {"queryId":0,"query":{"perPage":10,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date"}} -->
|
|
140
|
+
<div class="wp-block-query">
|
|
141
|
+
<!-- wp:post-template -->
|
|
142
|
+
<!-- wp:post-title {"isLink":true} /-->
|
|
143
|
+
<!-- wp:post-date /-->
|
|
144
|
+
<!-- wp:post-excerpt /-->
|
|
145
|
+
<!-- /wp:post-template -->
|
|
146
|
+
|
|
147
|
+
<!-- wp:query-pagination -->
|
|
148
|
+
<!-- wp:query-pagination-previous /-->
|
|
149
|
+
<!-- wp:query-pagination-numbers /-->
|
|
150
|
+
<!-- wp:query-pagination-next /-->
|
|
151
|
+
<!-- /wp:query-pagination -->
|
|
152
|
+
</div>
|
|
153
|
+
<!-- /wp:query -->
|
|
154
|
+
</main>
|
|
155
|
+
<!-- /wp:group -->
|
|
156
|
+
|
|
157
|
+
<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**parts/header.html**:
|
|
161
|
+
```html
|
|
162
|
+
<!-- wp:group {"layout":{"type":"flex","justifyContent":"space-between"}} -->
|
|
163
|
+
<div class="wp-block-group">
|
|
164
|
+
<!-- wp:site-title /-->
|
|
165
|
+
<!-- wp:navigation /-->
|
|
166
|
+
</div>
|
|
167
|
+
<!-- /wp:group -->
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**parts/footer.html**:
|
|
171
|
+
```html
|
|
172
|
+
<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
173
|
+
<div class="wp-block-group">
|
|
174
|
+
<!-- wp:paragraph {"align":"center"} -->
|
|
175
|
+
<p class="has-text-align-center">© 2024 My Theme. All rights reserved.</p>
|
|
176
|
+
<!-- /wp:paragraph -->
|
|
177
|
+
</div>
|
|
178
|
+
<!-- /wp:group -->
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**functions.php** (Optional but recommended):
|
|
182
|
+
```php
|
|
183
|
+
<?php
|
|
184
|
+
/**
|
|
185
|
+
* My Theme functions and definitions
|
|
186
|
+
*/
|
|
187
|
+
|
|
188
|
+
// Prevent direct access
|
|
189
|
+
if ( ! defined( 'ABSPATH' ) ) {
|
|
190
|
+
exit;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Enqueue theme styles
|
|
195
|
+
*/
|
|
196
|
+
function my_theme_enqueue_styles() {
|
|
197
|
+
wp_enqueue_style(
|
|
198
|
+
'my-theme-style',
|
|
199
|
+
get_stylesheet_uri(),
|
|
200
|
+
array(),
|
|
201
|
+
wp_get_theme()->get( 'Version' )
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Register block patterns
|
|
208
|
+
*/
|
|
209
|
+
function my_theme_register_patterns() {
|
|
210
|
+
register_block_pattern_category(
|
|
211
|
+
'my-theme',
|
|
212
|
+
array( 'label' => __( 'My Theme', 'my-theme' ) )
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
add_action( 'init', 'my_theme_register_patterns' );
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Step 3: Create Additional Templates
|
|
219
|
+
|
|
220
|
+
Create these templates as needed:
|
|
221
|
+
|
|
222
|
+
- `templates/single.html` - Single post
|
|
223
|
+
- `templates/page.html` - Page
|
|
224
|
+
- `templates/archive.html` - Archive
|
|
225
|
+
- `templates/404.html` - 404 error
|
|
226
|
+
- `templates/front-page.html` - Front page
|
|
227
|
+
- `templates/home.html` - Blog home
|
|
228
|
+
|
|
229
|
+
### Step 4: Add Screenshot
|
|
230
|
+
|
|
231
|
+
Create `screenshot.png` (1200x900px recommended) showing theme preview.
|
|
232
|
+
|
|
233
|
+
### Step 5: Activate Theme
|
|
234
|
+
|
|
235
|
+
1. Go to WordPress admin → Appearance → Themes
|
|
236
|
+
2. Find your theme
|
|
237
|
+
3. Click "Activate"
|
|
238
|
+
|
|
239
|
+
## Workflow 2: Convert Classic Theme to Block Theme
|
|
240
|
+
|
|
241
|
+
### Step 1: Add theme.json
|
|
242
|
+
|
|
243
|
+
Create `theme.json` in theme root with basic configuration (see above).
|
|
244
|
+
|
|
245
|
+
### Step 2: Create Templates Directory
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
mkdir templates parts
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Step 3: Convert Template Files
|
|
252
|
+
|
|
253
|
+
**Convert header.php to parts/header.html**:
|
|
254
|
+
1. Extract header HTML
|
|
255
|
+
2. Convert to block markup
|
|
256
|
+
3. Replace PHP functions with block equivalents
|
|
257
|
+
|
|
258
|
+
**Convert footer.php to parts/footer.html**:
|
|
259
|
+
1. Extract footer HTML
|
|
260
|
+
2. Convert to block markup
|
|
261
|
+
|
|
262
|
+
**Convert index.php to templates/index.html**:
|
|
263
|
+
1. Extract main content area
|
|
264
|
+
2. Convert loop to Query block
|
|
265
|
+
3. Add template parts for header/footer
|
|
266
|
+
|
|
267
|
+
### Step 4: Test and Refine
|
|
268
|
+
|
|
269
|
+
1. Activate theme
|
|
270
|
+
2. Test all templates
|
|
271
|
+
3. Adjust block markup as needed
|
|
272
|
+
4. Remove old PHP templates once converted
|
|
273
|
+
|
|
274
|
+
## Workflow 3: Theme Setup and Configuration
|
|
275
|
+
|
|
276
|
+
### Enqueue Assets
|
|
277
|
+
|
|
278
|
+
**functions.php**:
|
|
279
|
+
```php
|
|
280
|
+
function my_theme_enqueue_assets() {
|
|
281
|
+
// Enqueue stylesheet
|
|
282
|
+
wp_enqueue_style(
|
|
283
|
+
'my-theme-style',
|
|
284
|
+
get_stylesheet_uri(),
|
|
285
|
+
array(),
|
|
286
|
+
wp_get_theme()->get( 'Version' )
|
|
287
|
+
);
|
|
288
|
+
|
|
289
|
+
// Enqueue custom CSS
|
|
290
|
+
wp_enqueue_style(
|
|
291
|
+
'my-theme-custom',
|
|
292
|
+
get_template_directory_uri() . '/assets/css/custom.css',
|
|
293
|
+
array( 'my-theme-style' ),
|
|
294
|
+
'1.0.0'
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
// Enqueue JavaScript
|
|
298
|
+
wp_enqueue_script(
|
|
299
|
+
'my-theme-script',
|
|
300
|
+
get_template_directory_uri() . '/assets/js/main.js',
|
|
301
|
+
array(),
|
|
302
|
+
'1.0.0',
|
|
303
|
+
true
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_assets' );
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Register Navigation Menus
|
|
310
|
+
|
|
311
|
+
```php
|
|
312
|
+
function my_theme_register_menus() {
|
|
313
|
+
register_nav_menus( array(
|
|
314
|
+
'primary' => __( 'Primary Menu', 'my-theme' ),
|
|
315
|
+
'footer' => __( 'Footer Menu', 'my-theme' ),
|
|
316
|
+
) );
|
|
317
|
+
}
|
|
318
|
+
add_action( 'after_setup_theme', 'my_theme_register_menus' );
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Add Theme Support
|
|
322
|
+
|
|
323
|
+
```php
|
|
324
|
+
function my_theme_setup() {
|
|
325
|
+
// Add default posts and comments RSS feed links to head
|
|
326
|
+
add_theme_support( 'automatic-feed-links' );
|
|
327
|
+
|
|
328
|
+
// Let WordPress manage the document title
|
|
329
|
+
add_theme_support( 'title-tag' );
|
|
330
|
+
|
|
331
|
+
// Enable support for Post Thumbnails
|
|
332
|
+
add_theme_support( 'post-thumbnails' );
|
|
333
|
+
|
|
334
|
+
// Add support for responsive embeds
|
|
335
|
+
add_theme_support( 'responsive-embeds' );
|
|
336
|
+
|
|
337
|
+
// Add support for editor styles
|
|
338
|
+
add_theme_support( 'editor-styles' );
|
|
339
|
+
|
|
340
|
+
// Add support for HTML5 markup
|
|
341
|
+
add_theme_support( 'html5', array(
|
|
342
|
+
'search-form',
|
|
343
|
+
'comment-form',
|
|
344
|
+
'comment-list',
|
|
345
|
+
'gallery',
|
|
346
|
+
'caption',
|
|
347
|
+
'style',
|
|
348
|
+
'script',
|
|
349
|
+
) );
|
|
350
|
+
|
|
351
|
+
// Add support for custom logo
|
|
352
|
+
add_theme_support( 'custom-logo', array(
|
|
353
|
+
'height' => 100,
|
|
354
|
+
'width' => 400,
|
|
355
|
+
'flex-height' => true,
|
|
356
|
+
'flex-width' => true,
|
|
357
|
+
) );
|
|
358
|
+
}
|
|
359
|
+
add_action( 'after_setup_theme', 'my_theme_setup' );
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Best Practices
|
|
363
|
+
|
|
364
|
+
### DO
|
|
365
|
+
|
|
366
|
+
✅ Use `theme.json` for global styles and settings
|
|
367
|
+
✅ Follow WordPress coding standards
|
|
368
|
+
✅ Sanitize and escape all output
|
|
369
|
+
✅ Use translation functions for all text
|
|
370
|
+
✅ Test with default WordPress content
|
|
371
|
+
✅ Provide screenshot.png
|
|
372
|
+
✅ Include readme.txt with documentation
|
|
373
|
+
✅ Use semantic HTML
|
|
374
|
+
✅ Ensure accessibility (WCAG 2.1 AA)
|
|
375
|
+
✅ Test on multiple devices and browsers
|
|
376
|
+
|
|
377
|
+
### DON'T
|
|
378
|
+
|
|
379
|
+
❌ Hardcode URLs or paths
|
|
380
|
+
❌ Include plugin functionality in themes
|
|
381
|
+
❌ Modify WordPress core files
|
|
382
|
+
❌ Use deprecated functions
|
|
383
|
+
❌ Ignore security best practices
|
|
384
|
+
❌ Forget to enqueue scripts/styles properly
|
|
385
|
+
❌ Use inline styles or scripts
|
|
386
|
+
❌ Skip translation support
|
|
387
|
+
❌ Ignore performance optimization
|
|
388
|
+
|