feat: PRAB article JSON-LD emitter + meta reader (v0.8.0) (#25)

prcore emits MedicalWebPage+Article JSON-LD for any post carrying _prab_* meta (ratified contract v1): citation[], about->Drug @ids, honest reviewedBy (Person only with a real human reviewer, else Organization), lastReviewed; integrates into Yoast's graph (no duplicate nodes), standalone @graph fallback; all _prab_* sanitized as untrusted. Unblocks the Phase-2b SEO stage.

QA: REJECT-P1 (DoD doc/test gaps) -> APPROVE @ dbfc50c (qa-reviews/peptide-repo-core/2026-06-23-dbfc50c.md). CEO greenlight 2026-06-22 (complete-all-tasks directive).

Agent-Session: prcore-jsonld-merge-20260623
This commit is contained in:
peptiderepo
2026-06-23 12:29:14 +07:00
committed by GitHub
parent a7a2bb2f6d
commit a1c77de332
10 changed files with 1194 additions and 4 deletions

View File

@@ -19,7 +19,7 @@ declare(strict_types=1);
* What: Registers all hooks, runs migrations, boots subsystems.
* Who calls it: peptide-repo-core.php on plugins_loaded.
* Dependencies: PR_Core_Migration_Runner, PR_Core_Peptide_CPT, PR_Core_Topic_Taxonomy,
* PR_Core_Admin, PR_Core_Disclaimer, PR_Core_Jsonld,
* PR_Core_Admin, PR_Core_Disclaimer, PR_Core_Jsonld, PR_Core_Jsonld_Article,
* PR_Core_Rest_Controller, PR_Core_Related_Posts_Section.
*
* @see peptide-repo-core.php — Bootstrap that instantiates this class.
@@ -91,6 +91,9 @@ class PR_Core {
$jsonld = new PR_Core_Jsonld();
$jsonld->register_hooks();
$jsonld_article = new PR_Core_Jsonld_Article();
$jsonld_article->register_hooks();
// Related Articles section (frontend).
$related_posts = new PR_Core_Related_Posts_Section(
new PR_Core_Internal_Posts_Provider()