3.8 KiB
Purpose
Expose a blog section on the site backed by cached WordPress content, including listing, detail pages, and category browsing.
ADDED Requirements
Requirement: Primary navigation entry
The site MUST add a header navigation link to the blog index at /blog labeled "Blog".
Scenario: Blog link in header
- WHEN a user views any page
- THEN the header navigation includes a "Blog" link that navigates to
/blog
Requirement: Blog index listing (posts)
The site MUST provide a blog index page at /blog that lists WordPress posts as cards containing:
- featured image (when available)
- title
- excerpt/summary
- publish date
The listing MUST be ordered by publish date descending (newest first).
The card MUST render a footer row that includes:
- publish date on the left
- views on the right when available (if views are not provided by the dataset, the card MUST omit views without breaking layout)
- a content source label (e.g.,
blog)
Each post card MUST be instrumented with Umami Track Events data attributes and MUST include at minimum:
data-umami-eventdata-umami-event-target_iddata-umami-event-placementdata-umami-event-target_url
Scenario: Blog index lists posts
- WHEN the cached WordPress dataset contains posts
- THEN
/blogrenders a list of post cards ordered by publish date descending
Scenario: Blog post card click is tracked
- WHEN a user clicks a blog post card on
/blog - THEN the click emits an Umami event with
target_id,placement, andtarget_url
Scenario: Blog post card layout is standardized
- WHEN
/blogrenders a blog post card - THEN the card shows featured image (when available), title, trimmed excerpt, and a footer bar containing date, optional views, and a source label
Requirement: Blog post detail
The site MUST provide a blog post detail page for each WordPress post that renders:
- title
- publish date
- featured image (when available)
- full post content
Scenario: Post detail renders
- WHEN a user navigates to a blog post detail page
- THEN the page renders the full post content from the cached WordPress dataset
Requirement: WordPress pages support
The blog section MUST support WordPress pages by rendering page detail routes that show:
- title
- featured image (when available)
- full page content
Scenario: Page detail renders
- WHEN a user navigates to a WordPress page detail route
- THEN the page renders the full page content from the cached WordPress dataset
Requirement: Category-based secondary navigation
The blog section MUST render a secondary navigation under the header derived from the cached WordPress categories.
Selecting a category MUST navigate to a category listing page showing only posts in that category.
Each secondary navigation link MUST be instrumented with Umami Track Events data attributes and MUST include at minimum:
data-umami-eventdata-umami-event-target_iddata-umami-event-placementdata-umami-event-target_url
Scenario: Category nav present
- WHEN the cached WordPress dataset contains categories
- THEN the blog section shows a secondary navigation with those categories
Scenario: Category listing filters posts
- WHEN a user navigates to a category listing page
- THEN only posts assigned to that category are listed
Scenario: Category nav click is tracked
- WHEN a user clicks a category link in the blog secondary navigation
- THEN the click emits an Umami event with
target_id,placement, andtarget_url
Requirement: Graceful empty states
If there are no WordPress posts available, the blog index MUST render a non-broken empty state and MUST still render header/navigation.
Scenario: No posts available
- WHEN the cached WordPress dataset contains no posts
- THEN
/blogrenders a helpful empty state