feat(perf): mobile performance Phase 1 — dequeue unused plugin assets + slim fonts + preconnect (#13)
Ships peptide-starter-theme v1.6.0.
Changes:
- New inc/perf-asset-policy.php module: conditional dequeue of WC/Elementor/USMI assets on pages that do not need them, Google Fonts weight slim (Roboto 100..900 → 400/500/700; Roboto Slab → 400/700), wp_resource_hints preconnect for fonts.googleapis.com + fonts.gstatic.com, cookie-notice-front script defer.
- Kill-switch constant PEPTIDE_STARTER_PERF_DEQUEUE (default true) for instant rollback via wp-config.php.
- 4 extensibility filters: peptide_starter_perf_woocommerce_{styles,scripts}, _elementor_{styles,scripts}, _usmi_{styles,scripts}, _font_weights.
- 13 unit tests in tests/test-perf-asset-policy.php.
- Bootstrap: 2 lines in functions.php (require + after_setup_theme action).
- Docs: CHANGELOG [1.6.0], ARCHITECTURE.md, CONVENTIONS.md how-to.
Target: mobile PSI 74 → 90+, LCP 5.4s → ~2.5s.
Post-deploy: purge LiteSpeed CSS bundle.
QA: qa-reviews/peptide-starter-theme/2026-04-23-a54b5c9.md (APPROVE with handle-drift verified false-positive).
This commit is contained in:
@@ -129,6 +129,43 @@ do_action( 'peptide_starter_hero_before' );
|
||||
- **languages/:** Translation files
|
||||
- **template-parts/:** Reusable template parts
|
||||
|
||||
## How to add a performance policy rule
|
||||
|
||||
When adding a new asset-perf rule (e.g., a new plugin's CSS to dequeue on
|
||||
non-relevant pages, or a new font family to slim):
|
||||
|
||||
1. **For dequeues:** edit `inc/perf-asset-policy.php`. Add the plugin's
|
||||
handle list to a new function (or extend the existing arrays via the
|
||||
matching filter — `peptide_starter_perf_<plugin>_handles`). Hook the
|
||||
new dequeue function on `wp_enqueue_scripts` priority 100, gated by
|
||||
`PEPTIDE_STARTER_PERF_DEQUEUE` and a context predicate (e.g.,
|
||||
`is_front_page()`, `! is_woocommerce()`).
|
||||
|
||||
2. **For font slimming:** add the family to the default array in
|
||||
`peptide_starter_perf_slim_google_fonts()`, or override at runtime
|
||||
via the `peptide_starter_perf_font_weights` filter. Specify only
|
||||
weights actually used by the design system; defaulting to "all weights"
|
||||
defeats the purpose.
|
||||
|
||||
3. **For new resource hints:** extend `peptide_starter_perf_resource_hints()`
|
||||
with the new domain in the `preconnect` array. WP renders the
|
||||
`<link>` tag automatically; don't echo your own.
|
||||
|
||||
4. **For deferring third-party scripts:** add the script handle to the
|
||||
list in `peptide_starter_perf_defer_cookie_notice()` (or rename the
|
||||
function if it grows beyond cookie-notice).
|
||||
|
||||
5. **Always add a test case** in `tests/test-perf-asset-policy.php`
|
||||
covering the new rule's happy path AND its negation (the page-context
|
||||
where the rule must NOT apply). The dequeue logic is silent if a
|
||||
handle name is wrong — only tests catch this before deploy.
|
||||
|
||||
6. **Verify on production handles** before committing. Plugin handle
|
||||
names are not always what you'd guess. SSH to Hostinger and run
|
||||
`wp eval 'global $wp_styles; do_action("wp_enqueue_scripts");
|
||||
foreach($wp_styles->registered as $h=>$o){echo $h.PHP_EOL;}'` to
|
||||
dump the actual handle names.
|
||||
|
||||
## Step-by-Step Guides
|
||||
|
||||
### How to Add a New Template
|
||||
|
||||
Reference in New Issue
Block a user