Hayat-e-Nau — WordPress Data Model & Architecture Mapping
Document Version: 1.0
Status: Validated against Live WordPress REST API (atqjamiatulfalah.org/hayat-e-nau)
1. Executive Findings on WordPress Architecture
The source WordPress installation relies on a hybrid architecture combining core WordPress blog posts with Gutenberg page-builder blocks (Spectra / Ultimate Addons for Gutenberg).
Crucially, the source does not use a dedicated Custom Post Type (CPT) for issues. Instead, issues and articles are modeled through an intricate category hierarchy, post-meta extensions, and embedded media attachments.
2. Source Representation Analysis
| Feature / Concept | Original WordPress Implementation | Empirical Evidence / Verification |
|---|---|---|
| Issues | Dual mechanism: (1) Category taxonomy under parent Cat ID 2 (1978..2026), and (2) Annual index posts linking to PDF media attachments. |
Category ID 2 contains 45 child year categories. Post ID 35 contains links to 1978 PDF scans. |
| Articles | Standard WordPress post entities (post_type: "post"). |
116 active articles in /wp-json/wp/v2/posts. |
| Editorial Sections | WordPress category taxonomy under parent Category ID 147 (sections). |
18 child categories (ID 148 to 165). |
| Topics / Tags | Standard WordPress tags (taxonomy: "post_tag"). |
85 tags in /wp-json/wp/v2/tags. |
| Authors | NOT standard WordPress user accounts (/wp/v2/users). Authors are stored in post-meta uagb_author_info (Spectra block metadata) containing display_name and author_link. |
Verified across all 161 posts. 53 distinct names extracted. |
| PDF Resources | Stored in wp-content/uploads/sites/2/[year]/[month]/ as media attachments. |
300 PDF media records identified in /wp-json/wp/v2/media. |
| Issue Covers | Stored in media library or referenced within post headers. | 170 image assets. |
| Custom Fields / ACF | None found. ACF or CMB2 plugins are NOT present. All custom data resides in uagb_* Gutenberg metadata. |
Checked /wp-json/acf/v3 (returned 404). Post meta inspected directly. |
3. Entity Mapping Schema: WordPress to Astro
+------------------------------------+ +-----------------------------------+
| WordPress REST Entity | | Astro Data Model |
+------------------------------------+ +-----------------------------------+
| Post ID (e.g. 1738) | ---> | Article.id ('art-1738') |
| Post Slug ('shukraan-e-nemat...') | ---> | Article.slug (clean kebab-case) |
| Post Title ('شکرانِ نعمت...') | ---> | Article.titleUrdu |
| Post Content (clean HTML) | ---> | Article.bodyUrdu |
| Post Excerpt (or auto 180 chars) | ---> | Article.excerptUrdu |
| Category (Child of ID 147) | ---> | Article.sectionId ('fikr-o-nazar')|
| Post Tags / Derived Topics | ---> | Article.topicIds (['fiqh', ...]) |
| Post Date ('2026-08-01') | ---> | Article.publicationDate |
| Meta: uagb_author_info.display_name| ---> | Author (canonicalized id & name) |
| Category 2 / Year / Post Header | ---> | Issue (Jild, Shumara, Musalsal) |
| Media Attachment (PDF) | ---> | Issue.fullPdfResource |
| Media Attachment (Cover) | ---> | Issue.coverImage |
+------------------------------------+ +-----------------------------------+
4. Relationship Traversal Validation
Issue $\rightarrow$ Editorial Sections $\rightarrow$ Articles $\rightarrow$ Author & Topic:
- An issue (e.g.
jul-sep-2026) aggregates all articles sharingissueId: "jul-sep-2026". - Each article belongs to exactly one
EditorialSection(e.g.fikr-o-nazar), linking back to Category 154. - Each article links to a canonical
Authorrecord (e.g.rizwan-ul-haq-falahi). - Each article links to one or more
Topictags (e.g.islamic-thought).
- An issue (e.g.
Bidirectional Traversability:
- Querying an author returns all their articles (
getArticlesByAuthorSlug). - Querying a section returns all its published articles (
getArticlesBySectionSlug). - Querying a topic returns all tagged articles (
getArticlesByTopicSlug). - Querying an issue returns its table of contents and PDF download (
getArticlesByIssueSlug).
- Querying an author returns all their articles (
5. Architectural Safeguards in Astro
- Static Pre-Rendering: Zero database lookups or API calls at runtime. All static pages are generated into
dist/at build time. - Deterministic URL Structure: All URLs follow canonical trailing-slash conventions:
/issues/[slug]//articles/[slug]//authors/[slug]//sections/[slug]//topics/[slug]/
- No Phantom Records: If an author or issue has 0 articles in the database, counts reflect 0 accurately and gracefully without rendering broken links.