Planning Doc Phase II

California Forever Theme - Next Phase

Total Development Hours: 35 hrs Focus: Development items only (design handled separately) Quote Reference: Google Sheets


Live Site Development Rules

All Phase II features are hidden from public until explicitly launched.

Visibility Strategy by Feature

Feature Hide Method Launch Action
Blog/Press Archive No nav link; direct URL only; posts set to Private or Draft Add to nav, publish posts
Blog/Press Singles Posts stay Draft/Private until ready Publish posts
Pledge Page Page set to Private; admin-only access Publish page, add CTAs
Press Kit Page set to Private Publish page, add nav link
New Modules Only added to Private/Draft pages for testing Deploy to live pages

Development Guidelines

  1. No nav changes until feature is approved for launch
  2. New pages start as Private (visible to logged-in admins only)
  3. Test posts/content as Drafts - don't publish until ready
  4. New CPTs registered with 'public' => false or 'publicly_queryable' => false initially
  5. Archive URLs won't be indexed if no posts are public
  6. Keep existing pages untouched - don't add new modules to live pages until approved

Pre-Launch Checklist (per feature)


Design Resources

Figma designs available for all Phase II features.

Available Mockups

File Feature
Blog.png Blog/Press archive page
Blog Single.png Blog single post template
Blog post module.png Recent Articles module (placeable anywhere)
In the Media.png Full In the Media page
In the media module.png "What others are saying" module
Press Kit.png Press Kit page with accordion sections
Living.png Break Ground 2026 / Pledge page
pledge_form.png Pledge form detail
About-Popup.png Team member bio popup

Content Plan

Rule: If real content isn't available, Claude provides filler. Ask if unsure. Rule: Extract filler content from Figma designs when available.

Content Status by Feature

Feature Content Needed Source Status
Blog Posts Initial posts Extract from mockups + californiaforever.com Ready
Press Releases Sample press releases californiaforever.com Ready
Legacy Migration 9 posts californiaforever.com (existing site) ✅ Source confirmed
Pledge Letter Full letter text Mockup has placeholder Use mockup text
Pledge Signers CSV ~100 initial signers Client TBD
Press Kit Files PDFs, images, documents Client TBD
Press Kit Copy Section descriptions Mockup (Logos, Renderings, Maps, B-Roll, Team) Ready
"What Others Are Saying" Quotes with attribution Mockup has real quotes Ready
Team "Why I'm Working" Quote per team member Optional field, use mockup example Ready

1. Blog & Press Releases

Dev Hours: 11 hrs

Design Reference

Mockups: Blog.png, Blog Single.png, Blog post module.png

Archive Page: - Page title: "Blog" (single archive with filter tabs) - Filter tabs: All | Press Releases | Blog ✅ CONFIRMED - Mixed grid layout with featured + standard cards - Cards show: category label, title, date, read time, excerpt, featured image - "Next Page" pagination

Single Post: - Large title, date, featured image - Long-form content area - Share button with social links (Facebook, X, LinkedIn, copy link) ✅ CONFIRMED - "Recent blogs" section at bottom (3 cards + "See all")

Blog Post Module (placeable anywhere): - Title: "Recent Articles" with "See All" button - 3 cards - mixed format (some with images, some text-only) - Can filter by category ✅ CONFIRMED - Note: Need to handle posts with/without featured images gracefully

Architecture Decision ✅ CONFIRMED

Using: Native WordPress post CPT with custom taxonomy for Blog vs Press Release - Combined archive with filter tabs - Single template shared by both (Press Release = same as Blog single)

Development Tasks

1.1 Setup & Architecture

1.2 Archive Page (4 hrs)

1.3 Single Template (4 hrs)

1.4 Blog Post Module (NEW)

1.5 Content Migration (2 hrs)

Sample Content (from mockups)

Type Title
Press Release California Forever welcomes Jim Wunderman as Head of Public Affairs
Press Release Formal Application Submitted for the Suisun Expansion Project
Blog California Forever unveils the Solano Foundry
Press Release Our letter to the Solano County Administrator re: timeline
Blog Gen. Mike Minihan (Ret.) Joins California Forever as Senior Advisor
Blog Year in review, new website, and moving to CaliforniaForever.com

2. In the Media (Existing CPT Enhancement)

Dev Hours: 5 hrs

Design Reference

Mockups: In the Media.png, In the media module.png

In the Media Page: - Title: "In the media" - Intro quote block at top - Grid of quote cards from publications - Each card: quote text, source logo, person name/title - Links to original articles ✅ CONFIRMED - "Next Page" pagination

"What Others Are Saying" Module: - Title: "What others are saying" with "See all" button - 3-column grid of quote cards - Company logos (NAIA, Netgear, Serve Robotics, UC Berkeley, etc.) - "Read more" button (expand or link to full page) - Can pull from media CPT OR manual curation ✅ CONFIRMED (Mixed)

Architecture Decision

Using: Existing media CPT (needs investigation when site is running) - "In the Media" page displays media CPT entries - "What Others Are Saying" module can pull from CPT or be manually curated - Each quote links to source article

Development Tasks

2.1 Investigate Existing Media CPT

2.2 In the Media Page Template

2.3 "What Others Are Saying" Module


3. Break Ground 2026 Pledge

Dev Hours: 10 hrs

Design Reference

Mockups: Living.png, pledge_form.png

Page Layout: - Hero: "Let's build California" with intro text - "Join the call to break ground" section with form - Signatory count display (e.g., "3,512 Signatories") - Supporters grid showing approved signers - CTA banner at bottom

Form Fields (from mockup): ✅ CONFIRMED - First name (required) - Last name (required) - Organization name (optional) - Position (optional) - Email* (required) - Note: "Submissions are reviewed before being added to the public list" - Share buttons (Facebook, X, LinkedIn, Copy link)

Supporters Display: - Grid format: "Name of Person" / "Name of Company" - Load More button ✅ CONFIRMED

Architecture Decision ✅ CONFIRMED

Development Tasks

3.1 Custom Post Type Setup

3.2 Gravity Form Build

3.3 Moderation Workflow (2 hrs)

3.4 Page Build (6 hrs)

3.5 Signatory Count Module (NEW) ✅ CONFIRMED

3.6 CSV Import (1 hr)


4. Press Kit

Dev Hours: 5 hrs

Design Reference

Mockup: Press Kit.png

Page Layout: - Title: "Press Kit" - Subtitle: "To contact our press team, please email press@californiaforever.com" - Accordion sections with thumbnail previews: - Logos - Renderings - Maps - B-Roll - Team - Each section expands to show grid of downloadable files ✅ CONFIRMED

Development Tasks

4.1 ACF Module Setup

4.2 Module Template (5 hrs)

4.3 Styling


5. Phase 1 Cleanup

Dev Hours: 4 hrs

Design Reference

Mockups: In the media module.png (What Others Are Saying), About-Popup.png (Team popup)

5.1 "What Others Are Saying" Section (2 hrs)

Covered in Section 2 - "What Others Are Saying" module

5.2 Team Member Popup (2 hrs) ✅ CONFIRMED

Applies to: All team members

Popup Content: - Photo (left side) - Name + Title - Bio paragraph - "Why I am working on this project" section (OPTIONAL) ✅ CONFIRMED - Close button (X)

Implementation: - GLightbox inline content popup - Add ACF fields to existing team/people CPT or module: - bio (textarea/WYSIWYG) - likely exists - why_working (textarea) - NEW, optional field - Trigger: click on team member card - Style popup content to match mockup

Development Tasks

5.2.1 ACF Field Updates

5.2.2 Popup Implementation


Summary

Section Dev Hrs Key Deliverables
Blog & Press Releases 11 Taxonomy, archive, single, blog module, migration
In the Media 5 Page template, "What Others Are Saying" module
Break Ground 2026 Pledge 10 CPT, Gravity Form, moderation, supporters module, count module
Press Kit 5 Accordion press kit module
Phase 1 Cleanup 4 Team member popup with optional "Why" field
Total 35

Resolved Questions ✅

Question Answer
Blog/Press architecture Combined archive with filter tabs, native posts + taxonomy
Press Release single template Same as Blog single
Share functionality Social platform links (Facebook, X, LinkedIn, Copy)
Supporters pagination Load More button
Pledge form fields First name, Last name, Organization, Position, Email*
Signatory count Reusable ACF module
Thank You page Simple confirmation
Media quotes linking Link to original articles
"What Others Are Saying" source Mixed - can pull from CPT or manual curation
Press Kit expanded view Grid of downloadable files
Team popup scope All team members
Team "Why I'm working" field Optional
Legacy content source californiaforever.com

Open Questions

  1. Blog module card layout: How to handle posts with/without images in the 3-card module? (Need design input)
  2. Pledge signers CSV: When will initial CSV be provided? What columns exactly?
  3. Press kit files: When will client provide organized assets?
  4. Media CPT: Need to investigate existing structure when site is running

Dependencies

Task Blocked By
Media CPT work Site running (DB connection)
Pledge CSV import CSV file from client
Press kit build Asset files from client
Legacy migration Access to californiaforever.com content

Prioritized Build Order

Priority Feature Hours Rationale
1 Blog & Press Releases 11 Foundation for content; no blockers; high visibility
2 Team Popup (Phase 1) 2 Quick win; enhances existing feature; low risk
3 Pledge Infrastructure 8 CPT + form + moderation can be built without CSV
4 In the Media + Module 5 Depends on investigating existing media CPT
5 Signatory Count Module 1 Quick add after pledge CPT exists
6 Pledge CSV Import 1 Blocked by client CSV delivery
7 Press Kit 5 Can build structure; needs client files to populate
8 "What Others Are Saying" 2 After media CPT investigation complete

Why This Order?

  1. Blog first - Most visible deliverable, unblocks content entry, proves out post architecture
  2. Team popup - 2-hour quick win while blog is fresh in mind
  3. Pledge early - Complex feature, better to build infrastructure before CSV arrives
  4. Media after site running - Need to investigate existing CPT structure
  5. Press Kit last - Dependent on client asset delivery

Git Commit Strategy

Branch Structure

main
└── feature/phase-2-development
    ├── Commits for each completed task
    └── Merge to main when feature group is complete

Commit Cadence

Commit after completing each discrete task:

Task Type Commit Example
New CPT/taxonomy Add article_type taxonomy for blog/press categorization
New template Add blog archive template with filter tabs
New module Add blog_posts ACF module for curated article display
ACF field changes Add why_working field to team member ACF group
Bug fix/refinement Fix mobile layout for blog card grid
Content migration Import 9 legacy posts from californiaforever.com

Commit Message Format

[Feature Area] Brief description

- Bullet point details if needed
- Reference to planning doc section

Phase II: Blog & Press Releases (Section 1)

Before Each Commit


Session Log

Date Work Completed
2026-01-06 Initial planning doc created, mockups reviewed, Q&A completed
2026-01-06 to 01-08 Blog system, Pledge system, Press Kit built; Phase 2 merged to main
2026-01-08 In the Media: ACF fields, export/import scripts, archive template; 22 mentions imported
2026-01-08 In the Media: Masonry layout with Pattern A/B alternating, medium/full card variants complete
2026-01-09 In the Media: AJAX load more, card rendering refactor, documentation
2026-01-09 Team Popup: GLightbox popup, ACF fields (bio, why_working, linkedin_url), LinkedIn button styling

Progress Tracker

Overall Progress

[████████████████████] 100% (35/35 hrs)

Phase 2 complete.

By Feature

Feature Status Progress Hours
1. Blog & Press Releases ✅ Complete ██████████ 100% 11/11
2. In the Media ✅ Complete ██████████ 100% 5/5
3. Pledge Page ✅ Complete ██████████ 100% 10/10
4. Press Kit ✅ Complete ██████████ 100% 5/5
5. Phase 1 Cleanup ✅ Complete ██████████ 100% 4/4

Task Checklist

1. Blog & Press Releases (11 hrs) ✅ COMPLETE

⚠️ PRE-PRODUCTION: Remove fake/filler posts before launch

⚠️ DESIGN UPDATE: Client revised designs - additional categories need to be implemented

Setup & Architecture - [x] Create article_type taxonomy - [x] Register taxonomy in theme

Archive Page (4 hrs) - [x] Create home.php template (WordPress blog archive) - [x] Archive header - [x] Filter tabs UI - [x] Post card component (reusable templates in template-parts/blog/) - [x] Grid layout (featured + standard) - [x] Pagination

Single Template (4 hrs) - [x] Create single.php template - [x] Hero area with title/date - [x] Featured image - [x] Content area - [x] Social share buttons - [x] "Recent blogs" section

Blog Post Module - [x] Create recent_articles ACF module - [x] Category filter field - [x] 3-card display - [x] Handle posts with/without images (excerpt shows for small cards) - [x] "See All" button

Content Migration (2 hrs) - [x] Import legacy posts - [x] Set featured images - [x] Assign taxonomy terms - [x] Created filler posts for testing

TODO: Design Updates - [ ] Implement additional categories from revised designs


2. In the Media (5 hrs) ✅ COMPLETE

Infrastructure (Done) - [x] Review existing media CPT structure - [x] Create ACF field group (acf-json/group_media_mention.json) - [x] Export testimonials from pages (content-import/export-testimonials.php) - [x] Import to CPT (content-import/import-media-mentions.php) - [x] 22 media mentions imported

Archive Template (Done) - [x] Create archive-media_mention.php - [x] Quote card grid (4 variants: person, press, org, simple) - [x] Pagination - [x] Masonry layout with Pattern A/B alternating rows - [x] Medium and full-width card variants - [x] Design refinements complete - [x] AJAX "Load More" functionality - [x] Card rendering refactored into reusable components - [x] Documentation (docs/IN-THE-MEDIA.md)

"What Others Are Saying" Module - [x] Create ACF module - [x] Quote card styling (reuse archive cards) - [x] Mixed source support (CPT + manual)


3. Break Ground 2026 Pledge (10 hrs) ✅ COMPLETE

⚠️ DESIGN UPDATE: Client revised designs - need to implement updated designs

CPT Setup - [x] Register pledge_signer CPT (inc/post-types/pledge-signers.php) - [x] Add meta fields - [x] Admin columns - [x] Approve/reject actions

Gravity Form - [x] Create form - [x] Form → CPT hook - [x] Admin notification - [x] Thank You redirect

Moderation Workflow (2 hrs) - [x] Pending signers view - [x] Bulk approve - [x] Status filters

Page Build (6 hrs) - [x] Create page with modules (Pledge page ID: 1885) - [x] Hero section - [x] Pledge letter content - [x] Form embed (pledge_form module) - [x] Supporters grid with Load More (supporters_grid module) - [x] CTA banner - [x] Thank You page (ID: 1886)

Signatory Count Module - [x] Create reusable module (signatory_count) - [x] Query approved count - [x] Styling

CSV Import (1 hr) - [x] Create import script (content-import/import-pledge-signers.php) - [x] Test with sample data - [x] Additional batches imported

TODO: Design Updates - [ ] Implement revised designs from client


4. Press Kit (5 hrs) ✅ COMPLETE

⚠️ CONTENT NEEDED: Client needs to enter real content (PDFs, images, documents)

ACF Setup - [x] Create module field group - [x] Sections repeater - [x] Downloads repeater

Template - [x] Create press_kit.php module - [x] Accordion UI - [x] File grid when expanded - [x] File type icons - [x] Download buttons


5. Phase 1 Cleanup (4 hrs) ✅ COMPLETE

"What Others Are Saying" (2 hrs) - [x] (Covered in Section 2)

Team Popup (2 hrs) ✅ COMPLETE - [x] Add enable_popup toggle field - [x] Add bio textarea field - [x] Add why_working ACF field (optional) - [x] Add linkedin_url field - [x] GLightbox popup implementation - [x] Popup styling (matches feature_cards pattern) - [x] LinkedIn button overlay on profile image - [x] Close button with proper styling - [x] Mobile layout


Legend

Symbol Meaning
🔲 Not Started
🔄 In Progress
Complete
⏸️ Blocked
[ ] Task pending
[x] Task complete