Maintainer overview of SEO data sources, resolve pipeline, output, and Parse.ly integration.
High-level flow
Post meta (_prc_seo_data)
Term meta (_prc_seo_term_data)
Template defaults (wp_options)
Art Direction meta
│
▼
Template_Context → Metadata → Template_Defaults → resolve_for_display()
│
├── Meta_Tags (OG, Twitter, robots, canonical)
├── Generator (schema objects)
└── JSON_Output (JSON-LD in wp_head)
Resolve and output
Bootstrap components
class-plugin.php wires Metadata, REST field registration, Generator, JSON_Output, Meta_Tags, Template_Defaults, Cache_Invalidator, Parsely_Integration, Editor_UI, Taxonomy_UI, plus redirect / QR / Search Console / reading-score modules under includes/.
Storage
- Post SEO:
_prc_seo_dataserialized array (includesprimary_terms) - Term SEO:
_prc_seo_term_data - Template patterns:
prc_schema_seo_templates(and related options)
Editor save path
React SEO panel → @wordpress/core-data useEntityProp → core REST prc_seo_data field → plugin REST update handlers → Metadata::update_seo_data() → cache clear (seo_data_*, schema_*, meta_tags_*).
Frontend render path
On wp_head, Meta_Tags and JSON_Output call resolve_for_display() with Template_Context so singular, term, home, and archive pages get the right defaults and overrides.
Parse.ly (wp-parsely)
Parsely_Integration merges PRC SEO into Automattic’s plugin instead of emitting a parallel system:
| Context | Behavior |
|---|---|
| Supported singulars | Enrich wp_parsely_metadata / wp_parsely_permalink from Metadata::get_seo_data() / resolve_for_display() |
| Front page, term archives, post type archives | Emit PRC parsely-* meta at wp_head priority 3; return empty array from wp_parsely_metadata so wp-parsely’s renderer bails |
| RLS template singular | Suppress wp-parsely; RLS owns its tags |
Do not gate with wp_parsely_should_insert_metadata — wp-parsely evaluates it once at init before conditional tags are reliable.
Archive Parse.ly HTML fragments cache in group prc_schema_seo_parsely_07142026 (1 hour TTL).
Caching
Unified group prc_schema_seo_07142026 for post-level seo_data / schema / meta_tags (see includes/class-cache-keys.php). Separate groups for versioned term meta tags and Parse.ly fragments.
Related deep pages
- Yoast feature assessment
- Testing strategy
- Plugin README — filters and tokens