مواد کی طرف جائیں (Skip to main content)
علمی، فکری، تحقیقی و دعوتی ترجمان — قائم شدہ: 1978ء
تازہ شمارہ: جولائی تا ستمبر 2026ء
Home/Docs/wordpress-data-model.md
Raw Markdown

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

  1. Issue $\rightarrow$ Editorial Sections $\rightarrow$ Articles $\rightarrow$ Author & Topic:

    • An issue (e.g. jul-sep-2026) aggregates all articles sharing issueId: "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 Author record (e.g. rizwan-ul-haq-falahi).
    • Each article links to one or more Topic tags (e.g. islamic-thought).
  2. 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).

5. Architectural Safeguards in Astro

  1. Static Pre-Rendering: Zero database lookups or API calls at runtime. All static pages are generated into dist/ at build time.
  2. Deterministic URL Structure: All URLs follow canonical trailing-slash conventions:
    • /issues/[slug]/
    • /articles/[slug]/
    • /authors/[slug]/
    • /sections/[slug]/
    • /topics/[slug]/
  3. No Phantom Records: If an author or issue has 0 articles in the database, counts reflect 0 accurately and gracefully without rendering broken links.