@mytechtoday/augment-extensions 0.7.0 → 1.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/AGENTS.md +265 -232
- package/README.md +956 -771
- package/augment-extensions/coding-standards/bash/README.md +196 -196
- package/augment-extensions/coding-standards/bash/module.json +163 -163
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -336
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -289
- package/augment-extensions/coding-standards/css/README.md +40 -40
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -550
- package/augment-extensions/coding-standards/css/module.json +44 -44
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -448
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -492
- package/augment-extensions/coding-standards/html/README.md +40 -40
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -267
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -505
- package/augment-extensions/coding-standards/html/module.json +44 -44
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -349
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -194
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -487
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -550
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -667
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -267
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -612
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -505
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -48
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -515
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -448
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -492
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -439
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -349
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -486
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -463
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -543
- package/augment-extensions/coding-standards/js/README.md +46 -46
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -487
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -667
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -612
- package/augment-extensions/coding-standards/js/module.json +49 -49
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -515
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -439
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -486
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -463
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -543
- package/augment-extensions/coding-standards/php/README.md +248 -248
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -204
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -206
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -234
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -211
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -215
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -189
- package/augment-extensions/coding-standards/php/module.json +166 -166
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -480
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -332
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -472
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -561
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -402
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -425
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -627
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -336
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -677
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -279
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -392
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -186
- package/augment-extensions/coding-standards/php/rules/security.md +358 -358
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -403
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -331
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -426
- package/augment-extensions/coding-standards/powershell/README.md +154 -154
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -272
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -173
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -243
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -297
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -224
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -340
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -255
- package/augment-extensions/coding-standards/powershell/module.json +165 -165
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -439
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -240
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -384
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -383
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -482
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -296
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -314
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -466
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -244
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -266
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -209
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -314
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -268
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -197
- package/augment-extensions/coding-standards/python/README.md +48 -48
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -373
- package/augment-extensions/coding-standards/python/module.json +30 -30
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -884
- package/augment-extensions/coding-standards/python/rules/best-practices.md +232 -232
- package/augment-extensions/coding-standards/python/rules/code-organization.md +220 -220
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -831
- package/augment-extensions/coding-standards/python/rules/error-handling.md +1008 -1008
- package/augment-extensions/coding-standards/python/rules/naming-conventions.md +172 -172
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -409
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -446
- package/augment-extensions/coding-standards/python/rules/type-hints.md +253 -253
- package/augment-extensions/coding-standards/react/README.md +45 -45
- package/augment-extensions/coding-standards/react/module.json +27 -27
- package/augment-extensions/coding-standards/react/rules/component-patterns.md +214 -214
- package/augment-extensions/coding-standards/react/rules/hooks-best-practices.md +235 -235
- package/augment-extensions/coding-standards/react/rules/performance.md +300 -300
- package/augment-extensions/coding-standards/react/rules/state-management.md +265 -265
- package/augment-extensions/coding-standards/react/rules/typescript-react.md +271 -271
- package/augment-extensions/coding-standards/typescript/README.md +45 -45
- package/augment-extensions/coding-standards/typescript/module.json +27 -27
- package/augment-extensions/coding-standards/typescript/rules/naming-conventions.md +225 -225
- package/augment-extensions/collections/html-css-js/README.md +82 -82
- package/augment-extensions/collections/html-css-js/collection.json +41 -41
- package/augment-extensions/domain-rules/api-design/README.md +41 -41
- package/augment-extensions/domain-rules/api-design/module.json +27 -27
- package/augment-extensions/domain-rules/api-design/rules/authentication.md +263 -263
- package/augment-extensions/domain-rules/api-design/rules/documentation.md +395 -395
- package/augment-extensions/domain-rules/api-design/rules/error-handling.md +290 -290
- package/augment-extensions/domain-rules/api-design/rules/graphql-api.md +313 -313
- package/augment-extensions/domain-rules/api-design/rules/rest-api.md +214 -214
- package/augment-extensions/domain-rules/api-design/rules/versioning.md +268 -268
- package/augment-extensions/domain-rules/database/README.md +161 -161
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -793
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -1132
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -868
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -805
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -621
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -965
- package/augment-extensions/domain-rules/database/module.json +28 -28
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -624
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -588
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -856
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -778
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -963
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -1076
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -697
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -671
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -607
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -907
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -783
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -980
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -485
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -521
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -858
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -934
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -27
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -26
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -23
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -26
- package/augment-extensions/domain-rules/mcp/README.md +150 -150
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -522
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -520
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -570
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -427
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -435
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -502
- package/augment-extensions/domain-rules/mcp/module.json +49 -49
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -595
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -345
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -687
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -636
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -484
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -360
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -393
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -194
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -625
- package/augment-extensions/domain-rules/security/README.md +41 -41
- package/augment-extensions/domain-rules/security/module.json +28 -28
- package/augment-extensions/domain-rules/security/rules/authentication-security.md +361 -361
- package/augment-extensions/domain-rules/security/rules/encryption.md +208 -208
- package/augment-extensions/domain-rules/security/rules/input-validation.md +294 -294
- package/augment-extensions/domain-rules/security/rules/owasp-top-10.md +339 -339
- package/augment-extensions/domain-rules/security/rules/secure-coding.md +293 -293
- package/augment-extensions/domain-rules/security/rules/web-security.md +268 -268
- package/augment-extensions/domain-rules/seo-sales-marketing/ANNOUNCEMENT.md +143 -0
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/README.md +140 -136
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/SCHEMA-VALIDATION-REPORT.md +216 -216
- package/augment-extensions/domain-rules/seo-sales-marketing/TEST-VALIDATION.md +129 -0
- package/augment-extensions/domain-rules/seo-sales-marketing/USAGE-GUIDES.md +254 -0
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/brand-kit-example.yaml +292 -292
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/campaign-brief-example.yaml +389 -389
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/content-calendar-example.yaml +643 -643
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/email-newsletter-example.md +376 -376
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/landing-page-example.md +934 -934
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/ppc-ad-copy-example.md +301 -301
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/seo-blog-post-example.md +347 -347
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/social-media-campaign-example.md +606 -606
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/module.json +50 -50
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/affiliate-influencer-marketing.md +593 -593
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/asset-management.md +418 -418
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/brand-consistency.md +210 -210
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/content-marketing.md +337 -337
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/conversion-optimization.md +455 -455
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/direct-sales.md +499 -499
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/email-marketing.md +439 -439
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/legal-compliance.md +227 -227
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/ppc-advertising.md +569 -569
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/seo-optimization.md +470 -470
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/social-media-marketing.md +414 -414
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/universal-marketing.md +177 -177
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/asset-inventory.schema.json +247 -247
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/brand-kit.schema.json +326 -326
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/campaign-brief.schema.json +342 -342
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/color-palette.schema.json +223 -223
- package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/content-template.schema.json +383 -383
- package/augment-extensions/domain-rules/wordpress/README.md +163 -163
- package/augment-extensions/domain-rules/wordpress/module.json +32 -32
- package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -617
- package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -270
- package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -423
- package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -493
- package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -568
- package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -510
- package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -251
- package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -501
- package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -564
- package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -388
- package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -441
- package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -139
- package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -1599
- package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -1727
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -428
- package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -422
- package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -1623
- package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -1343
- package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -734
- package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -1350
- package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -503
- package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -971
- package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -53
- package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -770
- package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -874
- package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -629
- package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -559
- package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -709
- package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -736
- package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -1057
- package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -463
- package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -478
- package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -818
- package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -416
- package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -667
- package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -878
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -693
- package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -352
- package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -818
- package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -624
- package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -866
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -1165
- package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -414
- package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -751
- package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -949
- package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -458
- package/augment-extensions/examples/design-patterns/README.md +37 -37
- package/augment-extensions/examples/design-patterns/examples/behavioral-patterns.md +370 -370
- package/augment-extensions/examples/design-patterns/examples/creational-patterns.md +250 -250
- package/augment-extensions/examples/design-patterns/examples/structural-patterns.md +264 -264
- package/augment-extensions/examples/design-patterns/module.json +27 -27
- package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -101
- package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -428
- package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -40
- package/augment-extensions/examples/rest-api-plugin/README.md +98 -98
- package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -1299
- package/augment-extensions/examples/rest-api-plugin/module.json +40 -40
- package/augment-extensions/examples/woocommerce-extension/README.md +98 -98
- package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -763
- package/augment-extensions/examples/woocommerce-extension/module.json +40 -40
- package/augment-extensions/workflows/beads/README.md +135 -135
- package/augment-extensions/workflows/beads/examples/complete-workflow-example.md +278 -278
- package/augment-extensions/workflows/beads/module.json +55 -55
- package/augment-extensions/workflows/beads/rules/best-practices.md +398 -398
- package/augment-extensions/workflows/beads/rules/file-format.md +327 -327
- package/augment-extensions/workflows/beads/rules/manual-setup.md +315 -315
- package/augment-extensions/workflows/beads/rules/workflow.md +326 -326
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -145
- package/augment-extensions/workflows/beads-integration/README.md +143 -143
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -32
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -140
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -293
- package/augment-extensions/workflows/beads-integration/module.json +75 -75
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -219
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -256
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -607
- package/augment-extensions/workflows/database/README.md +195 -195
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -295
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -498
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -496
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -444
- package/augment-extensions/workflows/database/module.json +42 -42
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -249
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -339
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -352
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -435
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -535
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -305
- package/augment-extensions/workflows/database/rules/workflow.md +458 -458
- package/augment-extensions/workflows/wordpress-plugin/README.md +232 -232
- package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -839
- package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -854
- package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -540
- package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -1083
- package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -669
- package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -597
- package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -925
- package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -752
- package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -773
- package/augment-extensions/workflows/wordpress-plugin/module.json +49 -49
- package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -942
- package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -702
- package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -728
- package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -775
- package/augment-extensions/writing-standards/screenplay/README.md +339 -300
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -121
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -153
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -243
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -213
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -164
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -95
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -116
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -151
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -67
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -142
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -184
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -204
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -181
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -70
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -399
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -407
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -401
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -409
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -268
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -289
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -293
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -294
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -293
- package/augment-extensions/writing-standards/screenplay/module.json +124 -124
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -339
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -329
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -169
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -437
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -263
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -261
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -315
- package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -413
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -372
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -374
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -443
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -207
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -444
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -331
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -334
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -299
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -263
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -412
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -370
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -374
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -339
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -277
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -393
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -332
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -247
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -200
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -233
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -245
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -221
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -159
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -1449
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -64
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -520
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -497
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -492
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -509
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -490
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -501
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -498
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -499
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -508
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -500
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -158
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -643
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -311
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -562
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -538
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -432
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -637
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -66
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -2
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -458
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -490
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -458
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -459
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -491
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -491
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -490
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -464
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -461
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -489
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -494
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -483
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -489
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -496
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -463
- package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -0
- package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -0
- package/cli/MODULES.md +302 -302
- package/cli/dist/cli.js +109 -22
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/gui.d.ts.map +1 -1
- package/cli/dist/commands/gui.js +54 -6
- package/cli/dist/commands/gui.js.map +1 -1
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +76 -23
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/self-remove.d.ts.map +1 -1
- package/cli/dist/commands/self-remove.js +48 -74
- package/cli/dist/commands/self-remove.js.map +1 -1
- package/cli/dist/commands/show.d.ts +11 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +120 -0
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/showCompleted.d.ts +21 -0
- package/cli/dist/commands/showCompleted.d.ts.map +1 -0
- package/cli/dist/commands/showCompleted.js +225 -0
- package/cli/dist/commands/showCompleted.js.map +1 -0
- package/cli/dist/commands/skill.js +88 -88
- package/cli/dist/commands/update.d.ts +2 -0
- package/cli/dist/commands/update.d.ts.map +1 -1
- package/cli/dist/commands/update.js +67 -1
- package/cli/dist/commands/update.js.map +1 -1
- package/cli/dist/utils/beadsCompletedChecker.d.ts +72 -0
- package/cli/dist/utils/beadsCompletedChecker.d.ts.map +1 -0
- package/cli/dist/utils/beadsCompletedChecker.js +198 -0
- package/cli/dist/utils/beadsCompletedChecker.js.map +1 -0
- package/cli/dist/utils/catalog-sync.js +13 -13
- package/cli/dist/utils/extractCommandHelp.d.ts +51 -0
- package/cli/dist/utils/extractCommandHelp.d.ts.map +1 -0
- package/cli/dist/utils/extractCommandHelp.js +250 -0
- package/cli/dist/utils/extractCommandHelp.js.map +1 -0
- package/cli/dist/utils/install-rules.js +55 -55
- package/cli/dist/utils/mcp-integration.js +44 -44
- package/cli/dist/utils/rule-install-hooks.js +8 -8
- package/modules.md +667 -630
- package/package.json +85 -85
|
@@ -1,441 +1,441 @@
|
|
|
1
|
-
# WooCommerce Customization Workflow
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document provides workflows for customizing WooCommerce, the most popular WordPress eCommerce plugin.
|
|
6
|
-
|
|
7
|
-
## Workflow 1: Template Overrides
|
|
8
|
-
|
|
9
|
-
### Step 1: Locate WooCommerce Template
|
|
10
|
-
|
|
11
|
-
WooCommerce templates are located in:
|
|
12
|
-
```
|
|
13
|
-
wp-content/plugins/woocommerce/templates/
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Common templates:
|
|
17
|
-
- `single-product.php` - Single product page
|
|
18
|
-
- `archive-product.php` - Product archive
|
|
19
|
-
- `cart/cart.php` - Shopping cart
|
|
20
|
-
- `checkout/form-checkout.php` - Checkout form
|
|
21
|
-
- `myaccount/my-account.php` - My Account page
|
|
22
|
-
|
|
23
|
-
### Step 2: Copy Template to Theme
|
|
24
|
-
|
|
25
|
-
Create directory structure in your theme:
|
|
26
|
-
```
|
|
27
|
-
your-theme/
|
|
28
|
-
└── woocommerce/
|
|
29
|
-
├── single-product.php
|
|
30
|
-
├── archive-product.php
|
|
31
|
-
├── cart/
|
|
32
|
-
│ └── cart.php
|
|
33
|
-
└── checkout/
|
|
34
|
-
└── form-checkout.php
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Copy the template from WooCommerce plugin to your theme:
|
|
38
|
-
```bash
|
|
39
|
-
cp wp-content/plugins/woocommerce/templates/single-product.php \
|
|
40
|
-
wp-content/themes/your-theme/woocommerce/single-product.php
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Step 3: Customize Template
|
|
44
|
-
|
|
45
|
-
Edit the copied template in your theme. WordPress will use your theme's version instead of the plugin's version.
|
|
46
|
-
|
|
47
|
-
**Example - Customize single product title**:
|
|
48
|
-
```php
|
|
49
|
-
<?php
|
|
50
|
-
/**
|
|
51
|
-
* Single Product Title
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
if ( ! defined( 'ABSPATH' ) ) {
|
|
55
|
-
exit;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
the_title( '<h1 class="product_title entry-title custom-product-title">', '</h1>' );
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Workflow 2: Add Custom Product Fields
|
|
62
|
-
|
|
63
|
-
### Step 1: Add Custom Field to Product
|
|
64
|
-
|
|
65
|
-
**functions.php**:
|
|
66
|
-
```php
|
|
67
|
-
/**
|
|
68
|
-
* Add custom field to product general tab
|
|
69
|
-
*/
|
|
70
|
-
function add_custom_product_field() {
|
|
71
|
-
woocommerce_wp_text_input(
|
|
72
|
-
array(
|
|
73
|
-
'id' => '_custom_product_field',
|
|
74
|
-
'label' => __( 'Custom Field', 'your-theme' ),
|
|
75
|
-
'placeholder' => __( 'Enter custom value', 'your-theme' ),
|
|
76
|
-
'desc_tip' => true,
|
|
77
|
-
'description' => __( 'This is a custom field.', 'your-theme' ),
|
|
78
|
-
)
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_field' );
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Step 2: Save Custom Field
|
|
85
|
-
|
|
86
|
-
```php
|
|
87
|
-
/**
|
|
88
|
-
* Save custom field value
|
|
89
|
-
*/
|
|
90
|
-
function save_custom_product_field( $post_id ) {
|
|
91
|
-
$custom_field = isset( $_POST['_custom_product_field'] ) ? sanitize_text_field( $_POST['_custom_product_field'] ) : '';
|
|
92
|
-
update_post_meta( $post_id, '_custom_product_field', $custom_field );
|
|
93
|
-
}
|
|
94
|
-
add_action( 'woocommerce_process_product_meta', 'save_custom_product_field' );
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Step 3: Display Custom Field on Frontend
|
|
98
|
-
|
|
99
|
-
```php
|
|
100
|
-
/**
|
|
101
|
-
* Display custom field on product page
|
|
102
|
-
*/
|
|
103
|
-
function display_custom_product_field() {
|
|
104
|
-
global $post;
|
|
105
|
-
|
|
106
|
-
$custom_field = get_post_meta( $post->ID, '_custom_product_field', true );
|
|
107
|
-
|
|
108
|
-
if ( $custom_field ) {
|
|
109
|
-
echo '<div class="custom-product-field">';
|
|
110
|
-
echo '<strong>' . esc_html__( 'Custom Field:', 'your-theme' ) . '</strong> ';
|
|
111
|
-
echo esc_html( $custom_field );
|
|
112
|
-
echo '</div>';
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
add_action( 'woocommerce_single_product_summary', 'display_custom_product_field', 25 );
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Workflow 3: Customize Checkout
|
|
119
|
-
|
|
120
|
-
### Add Custom Checkout Field
|
|
121
|
-
|
|
122
|
-
```php
|
|
123
|
-
/**
|
|
124
|
-
* Add custom field to checkout
|
|
125
|
-
*/
|
|
126
|
-
function add_custom_checkout_field( $fields ) {
|
|
127
|
-
$fields['billing']['billing_custom_field'] = array(
|
|
128
|
-
'type' => 'text',
|
|
129
|
-
'label' => __( 'Custom Field', 'your-theme' ),
|
|
130
|
-
'placeholder' => __( 'Enter value', 'your-theme' ),
|
|
131
|
-
'required' => true,
|
|
132
|
-
'class' => array( 'form-row-wide' ),
|
|
133
|
-
'clear' => true,
|
|
134
|
-
'priority' => 100,
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
return $fields;
|
|
138
|
-
}
|
|
139
|
-
add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Validate Custom Checkout Field
|
|
143
|
-
|
|
144
|
-
```php
|
|
145
|
-
/**
|
|
146
|
-
* Validate custom checkout field
|
|
147
|
-
*/
|
|
148
|
-
function validate_custom_checkout_field() {
|
|
149
|
-
if ( empty( $_POST['billing_custom_field'] ) ) {
|
|
150
|
-
wc_add_notice( __( 'Please enter a value for Custom Field.', 'your-theme' ), 'error' );
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
add_action( 'woocommerce_checkout_process', 'validate_custom_checkout_field' );
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Save Custom Checkout Field
|
|
157
|
-
|
|
158
|
-
```php
|
|
159
|
-
/**
|
|
160
|
-
* Save custom checkout field to order meta
|
|
161
|
-
*/
|
|
162
|
-
function save_custom_checkout_field( $order_id ) {
|
|
163
|
-
if ( ! empty( $_POST['billing_custom_field'] ) ) {
|
|
164
|
-
update_post_meta( $order_id, '_billing_custom_field', sanitize_text_field( $_POST['billing_custom_field'] ) );
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Display Custom Field in Admin Order
|
|
171
|
-
|
|
172
|
-
```php
|
|
173
|
-
/**
|
|
174
|
-
* Display custom field in admin order
|
|
175
|
-
*/
|
|
176
|
-
function display_custom_field_in_admin_order( $order ) {
|
|
177
|
-
$custom_field = get_post_meta( $order->get_id(), '_billing_custom_field', true );
|
|
178
|
-
|
|
179
|
-
if ( $custom_field ) {
|
|
180
|
-
echo '<p><strong>' . esc_html__( 'Custom Field:', 'your-theme' ) . '</strong> ' . esc_html( $custom_field ) . '</p>';
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_in_admin_order' );
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
## Workflow 4: Customize Email Templates
|
|
187
|
-
|
|
188
|
-
### Step 1: Copy Email Template to Theme
|
|
189
|
-
|
|
190
|
-
Create directory structure:
|
|
191
|
-
```
|
|
192
|
-
your-theme/
|
|
193
|
-
└── woocommerce/
|
|
194
|
-
└── emails/
|
|
195
|
-
├── customer-completed-order.php
|
|
196
|
-
└── admin-new-order.php
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Copy template:
|
|
200
|
-
```bash
|
|
201
|
-
cp wp-content/plugins/woocommerce/templates/emails/customer-completed-order.php \
|
|
202
|
-
wp-content/themes/your-theme/woocommerce/emails/customer-completed-order.php
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Step 2: Customize Email Template
|
|
206
|
-
|
|
207
|
-
Edit the template to add custom content:
|
|
208
|
-
|
|
209
|
-
```php
|
|
210
|
-
<?php
|
|
211
|
-
/**
|
|
212
|
-
* Customer completed order email
|
|
213
|
-
*/
|
|
214
|
-
|
|
215
|
-
if ( ! defined( 'ABSPATH' ) ) {
|
|
216
|
-
exit;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
do_action( 'woocommerce_email_header', $email_heading, $email );
|
|
220
|
-
|
|
221
|
-
?>
|
|
222
|
-
|
|
223
|
-
<p><?php esc_html_e( 'Hi there. Your order has been completed!', 'your-theme' ); ?></p>
|
|
224
|
-
|
|
225
|
-
<!-- Custom content here -->
|
|
226
|
-
<div class="custom-email-section">
|
|
227
|
-
<h2><?php esc_html_e( 'Thank you for your purchase!', 'your-theme' ); ?></h2>
|
|
228
|
-
<p><?php esc_html_e( 'We appreciate your business.', 'your-theme' ); ?></p>
|
|
229
|
-
</div>
|
|
230
|
-
|
|
231
|
-
<?php
|
|
232
|
-
|
|
233
|
-
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );
|
|
234
|
-
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );
|
|
235
|
-
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );
|
|
236
|
-
do_action( 'woocommerce_email_footer', $email );
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
### Step 3: Add Custom Content to Emails
|
|
240
|
-
|
|
241
|
-
```php
|
|
242
|
-
/**
|
|
243
|
-
* Add custom content to order emails
|
|
244
|
-
*/
|
|
245
|
-
function add_custom_email_content( $order, $sent_to_admin, $plain_text, $email ) {
|
|
246
|
-
if ( $plain_text ) {
|
|
247
|
-
echo "\n" . __( 'Custom message for plain text emails', 'your-theme' ) . "\n";
|
|
248
|
-
} else {
|
|
249
|
-
echo '<div class="custom-email-content">';
|
|
250
|
-
echo '<p>' . esc_html__( 'Custom message for HTML emails', 'your-theme' ) . '</p>';
|
|
251
|
-
echo '</div>';
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
add_action( 'woocommerce_email_before_order_table', 'add_custom_email_content', 10, 4 );
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## Workflow 5: Payment Gateway Integration
|
|
258
|
-
|
|
259
|
-
### Create Custom Payment Gateway
|
|
260
|
-
|
|
261
|
-
**includes/class-custom-gateway.php**:
|
|
262
|
-
```php
|
|
263
|
-
<?php
|
|
264
|
-
/**
|
|
265
|
-
* Custom Payment Gateway
|
|
266
|
-
*/
|
|
267
|
-
|
|
268
|
-
if ( ! defined( 'ABSPATH' ) ) {
|
|
269
|
-
exit;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
class WC_Custom_Gateway extends WC_Payment_Gateway {
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Constructor
|
|
276
|
-
*/
|
|
277
|
-
public function __construct() {
|
|
278
|
-
$this->id = 'custom_gateway';
|
|
279
|
-
$this->icon = '';
|
|
280
|
-
$this->has_fields = true;
|
|
281
|
-
$this->method_title = __( 'Custom Gateway', 'your-theme' );
|
|
282
|
-
$this->method_description = __( 'Custom payment gateway description', 'your-theme' );
|
|
283
|
-
|
|
284
|
-
// Load settings
|
|
285
|
-
$this->init_form_fields();
|
|
286
|
-
$this->init_settings();
|
|
287
|
-
|
|
288
|
-
// Get settings
|
|
289
|
-
$this->title = $this->get_option( 'title' );
|
|
290
|
-
$this->description = $this->get_option( 'description' );
|
|
291
|
-
$this->enabled = $this->get_option( 'enabled' );
|
|
292
|
-
|
|
293
|
-
// Actions
|
|
294
|
-
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Initialize form fields
|
|
299
|
-
*/
|
|
300
|
-
public function init_form_fields() {
|
|
301
|
-
$this->form_fields = array(
|
|
302
|
-
'enabled' => array(
|
|
303
|
-
'title' => __( 'Enable/Disable', 'your-theme' ),
|
|
304
|
-
'type' => 'checkbox',
|
|
305
|
-
'label' => __( 'Enable Custom Gateway', 'your-theme' ),
|
|
306
|
-
'default' => 'no',
|
|
307
|
-
),
|
|
308
|
-
'title' => array(
|
|
309
|
-
'title' => __( 'Title', 'your-theme' ),
|
|
310
|
-
'type' => 'text',
|
|
311
|
-
'description' => __( 'Payment method title', 'your-theme' ),
|
|
312
|
-
'default' => __( 'Custom Payment', 'your-theme' ),
|
|
313
|
-
'desc_tip' => true,
|
|
314
|
-
),
|
|
315
|
-
'description' => array(
|
|
316
|
-
'title' => __( 'Description', 'your-theme' ),
|
|
317
|
-
'type' => 'textarea',
|
|
318
|
-
'description' => __( 'Payment method description', 'your-theme' ),
|
|
319
|
-
'default' => __( 'Pay with custom gateway', 'your-theme' ),
|
|
320
|
-
),
|
|
321
|
-
);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Process payment
|
|
326
|
-
*/
|
|
327
|
-
public function process_payment( $order_id ) {
|
|
328
|
-
$order = wc_get_order( $order_id );
|
|
329
|
-
|
|
330
|
-
// Process payment here
|
|
331
|
-
// ...
|
|
332
|
-
|
|
333
|
-
// Mark order as processing or completed
|
|
334
|
-
$order->payment_complete();
|
|
335
|
-
|
|
336
|
-
// Reduce stock levels
|
|
337
|
-
wc_reduce_stock_levels( $order_id );
|
|
338
|
-
|
|
339
|
-
// Remove cart
|
|
340
|
-
WC()->cart->empty_cart();
|
|
341
|
-
|
|
342
|
-
// Return success
|
|
343
|
-
return array(
|
|
344
|
-
'result' => 'success',
|
|
345
|
-
'redirect' => $this->get_return_url( $order ),
|
|
346
|
-
);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### Register Payment Gateway
|
|
352
|
-
|
|
353
|
-
**functions.php**:
|
|
354
|
-
```php
|
|
355
|
-
/**
|
|
356
|
-
* Add custom payment gateway
|
|
357
|
-
*/
|
|
358
|
-
function add_custom_payment_gateway( $gateways ) {
|
|
359
|
-
$gateways[] = 'WC_Custom_Gateway';
|
|
360
|
-
return $gateways;
|
|
361
|
-
}
|
|
362
|
-
add_filter( 'woocommerce_payment_gateways', 'add_custom_payment_gateway' );
|
|
363
|
-
|
|
364
|
-
/**
|
|
365
|
-
* Load custom gateway class
|
|
366
|
-
*/
|
|
367
|
-
function load_custom_gateway_class() {
|
|
368
|
-
require_once get_template_directory() . '/includes/class-custom-gateway.php';
|
|
369
|
-
}
|
|
370
|
-
add_action( 'plugins_loaded', 'load_custom_gateway_class' );
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
## Workflow 6: Customize Product Loop
|
|
374
|
-
|
|
375
|
-
### Modify Products Per Page
|
|
376
|
-
|
|
377
|
-
```php
|
|
378
|
-
/**
|
|
379
|
-
* Change number of products per page
|
|
380
|
-
*/
|
|
381
|
-
function custom_products_per_page( $cols ) {
|
|
382
|
-
return 12;
|
|
383
|
-
}
|
|
384
|
-
add_filter( 'loop_shop_per_page', 'custom_products_per_page', 20 );
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
### Modify Product Loop Columns
|
|
388
|
-
|
|
389
|
-
```php
|
|
390
|
-
/**
|
|
391
|
-
* Change number of product columns
|
|
392
|
-
*/
|
|
393
|
-
function custom_product_columns( $columns ) {
|
|
394
|
-
return 4;
|
|
395
|
-
}
|
|
396
|
-
add_filter( 'loop_shop_columns', 'custom_product_columns' );
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### Add Custom Content to Product Loop
|
|
400
|
-
|
|
401
|
-
```php
|
|
402
|
-
/**
|
|
403
|
-
* Add custom badge to products on sale
|
|
404
|
-
*/
|
|
405
|
-
function add_sale_badge() {
|
|
406
|
-
global $product;
|
|
407
|
-
|
|
408
|
-
if ( $product->is_on_sale() ) {
|
|
409
|
-
echo '<span class="sale-badge">' . esc_html__( 'Sale!', 'your-theme' ) . '</span>';
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
add_action( 'woocommerce_before_shop_loop_item_title', 'add_sale_badge', 10 );
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
## Best Practices
|
|
416
|
-
|
|
417
|
-
### DO
|
|
418
|
-
|
|
419
|
-
✅ Use child themes for customizations
|
|
420
|
-
✅ Copy templates to theme, don't modify plugin files
|
|
421
|
-
✅ Use WooCommerce hooks and filters
|
|
422
|
-
✅ Sanitize and validate all input
|
|
423
|
-
✅ Escape all output
|
|
424
|
-
✅ Test with WooCommerce updates
|
|
425
|
-
✅ Follow WooCommerce coding standards
|
|
426
|
-
✅ Use translation functions
|
|
427
|
-
✅ Check WooCommerce is active before using functions
|
|
428
|
-
✅ Document customizations
|
|
429
|
-
|
|
430
|
-
### DON'T
|
|
431
|
-
|
|
432
|
-
❌ Modify WooCommerce plugin files directly
|
|
433
|
-
❌ Ignore template version compatibility
|
|
434
|
-
❌ Skip input validation
|
|
435
|
-
❌ Hardcode values
|
|
436
|
-
❌ Use deprecated WooCommerce functions
|
|
437
|
-
❌ Forget to test checkout process
|
|
438
|
-
❌ Ignore mobile responsiveness
|
|
439
|
-
❌ Skip security best practices
|
|
440
|
-
❌ Forget to handle edge cases
|
|
441
|
-
|
|
1
|
+
# WooCommerce Customization Workflow
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document provides workflows for customizing WooCommerce, the most popular WordPress eCommerce plugin.
|
|
6
|
+
|
|
7
|
+
## Workflow 1: Template Overrides
|
|
8
|
+
|
|
9
|
+
### Step 1: Locate WooCommerce Template
|
|
10
|
+
|
|
11
|
+
WooCommerce templates are located in:
|
|
12
|
+
```
|
|
13
|
+
wp-content/plugins/woocommerce/templates/
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Common templates:
|
|
17
|
+
- `single-product.php` - Single product page
|
|
18
|
+
- `archive-product.php` - Product archive
|
|
19
|
+
- `cart/cart.php` - Shopping cart
|
|
20
|
+
- `checkout/form-checkout.php` - Checkout form
|
|
21
|
+
- `myaccount/my-account.php` - My Account page
|
|
22
|
+
|
|
23
|
+
### Step 2: Copy Template to Theme
|
|
24
|
+
|
|
25
|
+
Create directory structure in your theme:
|
|
26
|
+
```
|
|
27
|
+
your-theme/
|
|
28
|
+
└── woocommerce/
|
|
29
|
+
├── single-product.php
|
|
30
|
+
├── archive-product.php
|
|
31
|
+
├── cart/
|
|
32
|
+
│ └── cart.php
|
|
33
|
+
└── checkout/
|
|
34
|
+
└── form-checkout.php
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Copy the template from WooCommerce plugin to your theme:
|
|
38
|
+
```bash
|
|
39
|
+
cp wp-content/plugins/woocommerce/templates/single-product.php \
|
|
40
|
+
wp-content/themes/your-theme/woocommerce/single-product.php
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Step 3: Customize Template
|
|
44
|
+
|
|
45
|
+
Edit the copied template in your theme. WordPress will use your theme's version instead of the plugin's version.
|
|
46
|
+
|
|
47
|
+
**Example - Customize single product title**:
|
|
48
|
+
```php
|
|
49
|
+
<?php
|
|
50
|
+
/**
|
|
51
|
+
* Single Product Title
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
if ( ! defined( 'ABSPATH' ) ) {
|
|
55
|
+
exit;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
the_title( '<h1 class="product_title entry-title custom-product-title">', '</h1>' );
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Workflow 2: Add Custom Product Fields
|
|
62
|
+
|
|
63
|
+
### Step 1: Add Custom Field to Product
|
|
64
|
+
|
|
65
|
+
**functions.php**:
|
|
66
|
+
```php
|
|
67
|
+
/**
|
|
68
|
+
* Add custom field to product general tab
|
|
69
|
+
*/
|
|
70
|
+
function add_custom_product_field() {
|
|
71
|
+
woocommerce_wp_text_input(
|
|
72
|
+
array(
|
|
73
|
+
'id' => '_custom_product_field',
|
|
74
|
+
'label' => __( 'Custom Field', 'your-theme' ),
|
|
75
|
+
'placeholder' => __( 'Enter custom value', 'your-theme' ),
|
|
76
|
+
'desc_tip' => true,
|
|
77
|
+
'description' => __( 'This is a custom field.', 'your-theme' ),
|
|
78
|
+
)
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_field' );
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 2: Save Custom Field
|
|
85
|
+
|
|
86
|
+
```php
|
|
87
|
+
/**
|
|
88
|
+
* Save custom field value
|
|
89
|
+
*/
|
|
90
|
+
function save_custom_product_field( $post_id ) {
|
|
91
|
+
$custom_field = isset( $_POST['_custom_product_field'] ) ? sanitize_text_field( $_POST['_custom_product_field'] ) : '';
|
|
92
|
+
update_post_meta( $post_id, '_custom_product_field', $custom_field );
|
|
93
|
+
}
|
|
94
|
+
add_action( 'woocommerce_process_product_meta', 'save_custom_product_field' );
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Step 3: Display Custom Field on Frontend
|
|
98
|
+
|
|
99
|
+
```php
|
|
100
|
+
/**
|
|
101
|
+
* Display custom field on product page
|
|
102
|
+
*/
|
|
103
|
+
function display_custom_product_field() {
|
|
104
|
+
global $post;
|
|
105
|
+
|
|
106
|
+
$custom_field = get_post_meta( $post->ID, '_custom_product_field', true );
|
|
107
|
+
|
|
108
|
+
if ( $custom_field ) {
|
|
109
|
+
echo '<div class="custom-product-field">';
|
|
110
|
+
echo '<strong>' . esc_html__( 'Custom Field:', 'your-theme' ) . '</strong> ';
|
|
111
|
+
echo esc_html( $custom_field );
|
|
112
|
+
echo '</div>';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
add_action( 'woocommerce_single_product_summary', 'display_custom_product_field', 25 );
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Workflow 3: Customize Checkout
|
|
119
|
+
|
|
120
|
+
### Add Custom Checkout Field
|
|
121
|
+
|
|
122
|
+
```php
|
|
123
|
+
/**
|
|
124
|
+
* Add custom field to checkout
|
|
125
|
+
*/
|
|
126
|
+
function add_custom_checkout_field( $fields ) {
|
|
127
|
+
$fields['billing']['billing_custom_field'] = array(
|
|
128
|
+
'type' => 'text',
|
|
129
|
+
'label' => __( 'Custom Field', 'your-theme' ),
|
|
130
|
+
'placeholder' => __( 'Enter value', 'your-theme' ),
|
|
131
|
+
'required' => true,
|
|
132
|
+
'class' => array( 'form-row-wide' ),
|
|
133
|
+
'clear' => true,
|
|
134
|
+
'priority' => 100,
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
return $fields;
|
|
138
|
+
}
|
|
139
|
+
add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Validate Custom Checkout Field
|
|
143
|
+
|
|
144
|
+
```php
|
|
145
|
+
/**
|
|
146
|
+
* Validate custom checkout field
|
|
147
|
+
*/
|
|
148
|
+
function validate_custom_checkout_field() {
|
|
149
|
+
if ( empty( $_POST['billing_custom_field'] ) ) {
|
|
150
|
+
wc_add_notice( __( 'Please enter a value for Custom Field.', 'your-theme' ), 'error' );
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
add_action( 'woocommerce_checkout_process', 'validate_custom_checkout_field' );
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Save Custom Checkout Field
|
|
157
|
+
|
|
158
|
+
```php
|
|
159
|
+
/**
|
|
160
|
+
* Save custom checkout field to order meta
|
|
161
|
+
*/
|
|
162
|
+
function save_custom_checkout_field( $order_id ) {
|
|
163
|
+
if ( ! empty( $_POST['billing_custom_field'] ) ) {
|
|
164
|
+
update_post_meta( $order_id, '_billing_custom_field', sanitize_text_field( $_POST['billing_custom_field'] ) );
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Display Custom Field in Admin Order
|
|
171
|
+
|
|
172
|
+
```php
|
|
173
|
+
/**
|
|
174
|
+
* Display custom field in admin order
|
|
175
|
+
*/
|
|
176
|
+
function display_custom_field_in_admin_order( $order ) {
|
|
177
|
+
$custom_field = get_post_meta( $order->get_id(), '_billing_custom_field', true );
|
|
178
|
+
|
|
179
|
+
if ( $custom_field ) {
|
|
180
|
+
echo '<p><strong>' . esc_html__( 'Custom Field:', 'your-theme' ) . '</strong> ' . esc_html( $custom_field ) . '</p>';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_in_admin_order' );
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Workflow 4: Customize Email Templates
|
|
187
|
+
|
|
188
|
+
### Step 1: Copy Email Template to Theme
|
|
189
|
+
|
|
190
|
+
Create directory structure:
|
|
191
|
+
```
|
|
192
|
+
your-theme/
|
|
193
|
+
└── woocommerce/
|
|
194
|
+
└── emails/
|
|
195
|
+
├── customer-completed-order.php
|
|
196
|
+
└── admin-new-order.php
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Copy template:
|
|
200
|
+
```bash
|
|
201
|
+
cp wp-content/plugins/woocommerce/templates/emails/customer-completed-order.php \
|
|
202
|
+
wp-content/themes/your-theme/woocommerce/emails/customer-completed-order.php
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Step 2: Customize Email Template
|
|
206
|
+
|
|
207
|
+
Edit the template to add custom content:
|
|
208
|
+
|
|
209
|
+
```php
|
|
210
|
+
<?php
|
|
211
|
+
/**
|
|
212
|
+
* Customer completed order email
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
if ( ! defined( 'ABSPATH' ) ) {
|
|
216
|
+
exit;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
do_action( 'woocommerce_email_header', $email_heading, $email );
|
|
220
|
+
|
|
221
|
+
?>
|
|
222
|
+
|
|
223
|
+
<p><?php esc_html_e( 'Hi there. Your order has been completed!', 'your-theme' ); ?></p>
|
|
224
|
+
|
|
225
|
+
<!-- Custom content here -->
|
|
226
|
+
<div class="custom-email-section">
|
|
227
|
+
<h2><?php esc_html_e( 'Thank you for your purchase!', 'your-theme' ); ?></h2>
|
|
228
|
+
<p><?php esc_html_e( 'We appreciate your business.', 'your-theme' ); ?></p>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<?php
|
|
232
|
+
|
|
233
|
+
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );
|
|
234
|
+
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );
|
|
235
|
+
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );
|
|
236
|
+
do_action( 'woocommerce_email_footer', $email );
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Step 3: Add Custom Content to Emails
|
|
240
|
+
|
|
241
|
+
```php
|
|
242
|
+
/**
|
|
243
|
+
* Add custom content to order emails
|
|
244
|
+
*/
|
|
245
|
+
function add_custom_email_content( $order, $sent_to_admin, $plain_text, $email ) {
|
|
246
|
+
if ( $plain_text ) {
|
|
247
|
+
echo "\n" . __( 'Custom message for plain text emails', 'your-theme' ) . "\n";
|
|
248
|
+
} else {
|
|
249
|
+
echo '<div class="custom-email-content">';
|
|
250
|
+
echo '<p>' . esc_html__( 'Custom message for HTML emails', 'your-theme' ) . '</p>';
|
|
251
|
+
echo '</div>';
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
add_action( 'woocommerce_email_before_order_table', 'add_custom_email_content', 10, 4 );
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Workflow 5: Payment Gateway Integration
|
|
258
|
+
|
|
259
|
+
### Create Custom Payment Gateway
|
|
260
|
+
|
|
261
|
+
**includes/class-custom-gateway.php**:
|
|
262
|
+
```php
|
|
263
|
+
<?php
|
|
264
|
+
/**
|
|
265
|
+
* Custom Payment Gateway
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
if ( ! defined( 'ABSPATH' ) ) {
|
|
269
|
+
exit;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
class WC_Custom_Gateway extends WC_Payment_Gateway {
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Constructor
|
|
276
|
+
*/
|
|
277
|
+
public function __construct() {
|
|
278
|
+
$this->id = 'custom_gateway';
|
|
279
|
+
$this->icon = '';
|
|
280
|
+
$this->has_fields = true;
|
|
281
|
+
$this->method_title = __( 'Custom Gateway', 'your-theme' );
|
|
282
|
+
$this->method_description = __( 'Custom payment gateway description', 'your-theme' );
|
|
283
|
+
|
|
284
|
+
// Load settings
|
|
285
|
+
$this->init_form_fields();
|
|
286
|
+
$this->init_settings();
|
|
287
|
+
|
|
288
|
+
// Get settings
|
|
289
|
+
$this->title = $this->get_option( 'title' );
|
|
290
|
+
$this->description = $this->get_option( 'description' );
|
|
291
|
+
$this->enabled = $this->get_option( 'enabled' );
|
|
292
|
+
|
|
293
|
+
// Actions
|
|
294
|
+
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Initialize form fields
|
|
299
|
+
*/
|
|
300
|
+
public function init_form_fields() {
|
|
301
|
+
$this->form_fields = array(
|
|
302
|
+
'enabled' => array(
|
|
303
|
+
'title' => __( 'Enable/Disable', 'your-theme' ),
|
|
304
|
+
'type' => 'checkbox',
|
|
305
|
+
'label' => __( 'Enable Custom Gateway', 'your-theme' ),
|
|
306
|
+
'default' => 'no',
|
|
307
|
+
),
|
|
308
|
+
'title' => array(
|
|
309
|
+
'title' => __( 'Title', 'your-theme' ),
|
|
310
|
+
'type' => 'text',
|
|
311
|
+
'description' => __( 'Payment method title', 'your-theme' ),
|
|
312
|
+
'default' => __( 'Custom Payment', 'your-theme' ),
|
|
313
|
+
'desc_tip' => true,
|
|
314
|
+
),
|
|
315
|
+
'description' => array(
|
|
316
|
+
'title' => __( 'Description', 'your-theme' ),
|
|
317
|
+
'type' => 'textarea',
|
|
318
|
+
'description' => __( 'Payment method description', 'your-theme' ),
|
|
319
|
+
'default' => __( 'Pay with custom gateway', 'your-theme' ),
|
|
320
|
+
),
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Process payment
|
|
326
|
+
*/
|
|
327
|
+
public function process_payment( $order_id ) {
|
|
328
|
+
$order = wc_get_order( $order_id );
|
|
329
|
+
|
|
330
|
+
// Process payment here
|
|
331
|
+
// ...
|
|
332
|
+
|
|
333
|
+
// Mark order as processing or completed
|
|
334
|
+
$order->payment_complete();
|
|
335
|
+
|
|
336
|
+
// Reduce stock levels
|
|
337
|
+
wc_reduce_stock_levels( $order_id );
|
|
338
|
+
|
|
339
|
+
// Remove cart
|
|
340
|
+
WC()->cart->empty_cart();
|
|
341
|
+
|
|
342
|
+
// Return success
|
|
343
|
+
return array(
|
|
344
|
+
'result' => 'success',
|
|
345
|
+
'redirect' => $this->get_return_url( $order ),
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Register Payment Gateway
|
|
352
|
+
|
|
353
|
+
**functions.php**:
|
|
354
|
+
```php
|
|
355
|
+
/**
|
|
356
|
+
* Add custom payment gateway
|
|
357
|
+
*/
|
|
358
|
+
function add_custom_payment_gateway( $gateways ) {
|
|
359
|
+
$gateways[] = 'WC_Custom_Gateway';
|
|
360
|
+
return $gateways;
|
|
361
|
+
}
|
|
362
|
+
add_filter( 'woocommerce_payment_gateways', 'add_custom_payment_gateway' );
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Load custom gateway class
|
|
366
|
+
*/
|
|
367
|
+
function load_custom_gateway_class() {
|
|
368
|
+
require_once get_template_directory() . '/includes/class-custom-gateway.php';
|
|
369
|
+
}
|
|
370
|
+
add_action( 'plugins_loaded', 'load_custom_gateway_class' );
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Workflow 6: Customize Product Loop
|
|
374
|
+
|
|
375
|
+
### Modify Products Per Page
|
|
376
|
+
|
|
377
|
+
```php
|
|
378
|
+
/**
|
|
379
|
+
* Change number of products per page
|
|
380
|
+
*/
|
|
381
|
+
function custom_products_per_page( $cols ) {
|
|
382
|
+
return 12;
|
|
383
|
+
}
|
|
384
|
+
add_filter( 'loop_shop_per_page', 'custom_products_per_page', 20 );
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Modify Product Loop Columns
|
|
388
|
+
|
|
389
|
+
```php
|
|
390
|
+
/**
|
|
391
|
+
* Change number of product columns
|
|
392
|
+
*/
|
|
393
|
+
function custom_product_columns( $columns ) {
|
|
394
|
+
return 4;
|
|
395
|
+
}
|
|
396
|
+
add_filter( 'loop_shop_columns', 'custom_product_columns' );
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Add Custom Content to Product Loop
|
|
400
|
+
|
|
401
|
+
```php
|
|
402
|
+
/**
|
|
403
|
+
* Add custom badge to products on sale
|
|
404
|
+
*/
|
|
405
|
+
function add_sale_badge() {
|
|
406
|
+
global $product;
|
|
407
|
+
|
|
408
|
+
if ( $product->is_on_sale() ) {
|
|
409
|
+
echo '<span class="sale-badge">' . esc_html__( 'Sale!', 'your-theme' ) . '</span>';
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
add_action( 'woocommerce_before_shop_loop_item_title', 'add_sale_badge', 10 );
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## Best Practices
|
|
416
|
+
|
|
417
|
+
### DO
|
|
418
|
+
|
|
419
|
+
✅ Use child themes for customizations
|
|
420
|
+
✅ Copy templates to theme, don't modify plugin files
|
|
421
|
+
✅ Use WooCommerce hooks and filters
|
|
422
|
+
✅ Sanitize and validate all input
|
|
423
|
+
✅ Escape all output
|
|
424
|
+
✅ Test with WooCommerce updates
|
|
425
|
+
✅ Follow WooCommerce coding standards
|
|
426
|
+
✅ Use translation functions
|
|
427
|
+
✅ Check WooCommerce is active before using functions
|
|
428
|
+
✅ Document customizations
|
|
429
|
+
|
|
430
|
+
### DON'T
|
|
431
|
+
|
|
432
|
+
❌ Modify WooCommerce plugin files directly
|
|
433
|
+
❌ Ignore template version compatibility
|
|
434
|
+
❌ Skip input validation
|
|
435
|
+
❌ Hardcode values
|
|
436
|
+
❌ Use deprecated WooCommerce functions
|
|
437
|
+
❌ Forget to test checkout process
|
|
438
|
+
❌ Ignore mobile responsiveness
|
|
439
|
+
❌ Skip security best practices
|
|
440
|
+
❌ Forget to handle edge cases
|
|
441
|
+
|