CLAUDE.md 3.7 KB

CLAUDE.md

Guidance for Claude Code when working in this repository.

What this is

daw — the custom WordPress theme behind davidawindham.com, running since 2004. This git repo covers the theme only (wp-content/themes/daw), not the full WordPress install. It is a classic (non-block) PHP theme with a hand-rolled gulp build. Expect cruft: ~22 years of accumulated pages, libraries, and dead code. Confirm before deleting anything you didn't write — old code here is often load-bearing in non-obvious ways.

Environment

  • Local URL: https://daw.ovid (Apache via Homebrew, self-signed cert)
  • WP install root: /Users/david/Sites/daw (theme is wp-content/themes/daw)
  • PHP: 8.3 · Node: 22 · WP-CLI: 2.12 (wp on PATH)
  • Plugins in play: Gravity Forms (+ Stripe/Signature/PDF), Akismet, WP Super Cache, WP Sweep, dw-guten (custom Gutenberg sidebar/metaboxes)

Build (gulp 4, task-based — there is no default task)

Run from the theme directory:

Command What it does
gulp copy Pull vendor assets out of node_modules into js/ and css/ (v4-*)
gulp mixin Compile css/**/*.scss.css
gulp build Concat + minify the main stylesheet → v4-style.min.css
gulp cssf Minify front-page CSS → css/v4-front.min.css
gulp js Concat + minify main scripts → js/v4-script.min.js
gulp jsf Concat + minify front-page scripts → js/v4-front.min.js
gulp run BrowserSync proxy of https://daw.ovid + watch (scss/css/php/js)

Edit source (style.css, css/*.scss, css/*.css, js/scripts.js, js/front-page.js), then rebuild. Never hand-edit the generated v4-*.min.* files — they are clobbered on the next build.

Layout

  • Templates: standard WP hierarchy at theme root (front-page.php, single.php, archive.php, page-{slug}.php, etc.). Many page-*.php map to specific pages by slug (about, studio, music, art, contact, desk…).
  • inc/: theme PHP loaded from functions.phputils.php, template.php, tweaks.php (always), plus smtp.php, form.php, analytics.php loaded conditionally. inc/lib/ holds vendored helpers (Twilio call/SMS, simple_html_dom).
  • header-*.php / footer-*.php: page-specific variants (-home, -studio).
  • Asset loading is centralized in dw_scripts() in functions.php — a big per-page if/elseif ladder keyed on is_page('slug'). Add new page assets there.

Conventions

  • Function/handle prefix is dw_. Match it.
  • .editorconfig is the standard: 2-space indent, LF, UTF-8, final newline, trim trailing whitespace. (Older files have mixed tabs — follow editorconfig for new/edited code.)
  • jQuery is deregistered globally and re-enqueued only where needed; don't assume it's present.
  • Analytics is self-hosted Matomo (/wik/), injected in wp_footer.

Working notes

Scratch space, plans, and investigation notes live in _claude/ — see _claude/README.md. Keep generated artifacts and throwaway scripts there, not at the theme root.

Gotchas

  • style.css is both the WP theme manifest (header comment) and real CSS — don't strip the header.
  • img/ and inc/lib/call/auth.php are gitignored (secrets/assets).
  • Two minified stylesheets exist (style.min.css, v4-style.min.css); the theme enqueues v4-style.min.css. style.min.css is legacy.