Guide

Plugin overview for producers

Pew Research Center's website (pewresearch.org) runs on WordPress, but most of what makes it ours lives in about 60 custom plugins, each named with a prc- prefix. A plugin is just a self-contained feature: one does charts, another does quizzes, another decides how staff bylines show up. We build the platform as many small plugins instead of one big program so teams can ship and update their piece without stepping on everyone else.

This is a plain-language tour, grouped by what each plugin helps you do. You don't need to read it front to back. Jump to whatever section matches your work. Three things worth knowing before you start:

  • A block is something an editor drags onto a page in the WordPress editor: a heading, an image, a chart, a quiz. Most of our plugins ship one or more blocks.
  • The "how it interacts" notes tell you which other plugins a given one leans on or feeds into. Almost everything quietly depends on the handful of foundation plugins covered first.
  • This describes what exists and why it matters. It is not a technical spec. When you need the deeper version, talk to engineering or read the plugin's README.

Foundations (almost everything depends on these)

These don't ship flashy features on their own. They're the shared toolbox every other plugin reaches into. When engineers mention "the design system" or "the block library," this is what they mean.

prc-scripts

The shared code warehouse. It holds the common JavaScript, styles, and reusable interface pieces (@prc/components, @prc/hooks, @prc/functions) that every other plugin pulls from, so we build a button or a dropdown once and reuse it everywhere.

Nearly every other prc- plugin depends on it. When prc-scripts changes, many plugins inherit that change automatically. That's powerful, and it's also why changes here get extra scrutiny.

prc-block-library

The main set of custom blocks editors use to build pages: layout pieces, form inputs, content displays, and more. When an editor assembles an article or a landing page, they're mostly working with blocks from here.

It builds on prc-scripts and prc-icon-library. Its form-input blocks double as the controls that drive search and filtering (see prc-elasticpress), and a lot of specialized plugins extend the patterns it establishes.

prc-icon-library

Our icon set, based on FontAwesome Pro. Every plugin pulls icons from one place, so the look stays consistent across the site. The block library and design system use it heavily.

prc-block-bits

A way to drop small dynamic "bits" of data inside running text. Think a figure or a reference that updates itself instead of being typed by hand. It hooks into the editor's text toolbar, and other plugins use it when they need a live value to sit inside otherwise normal prose.

prc-taxonomies

Defines the core ways we categorize content: Research Teams, Formats, Topics, Languages, and others. Taxonomies are the labels and groupings that make content findable across the site.

Almost every content type and search feature relies on these categories, which makes this one of the quieter but more central pieces of the platform.


Content types (the kinds of things we publish)

WordPress gives you "posts" and "pages" out of the box. These plugins add the richer, PRC-specific content types our research needs.

prc-post-like-types

Creates post-style content types such as Decoded, Short Reads, and Press Releases. These behave like a blog post but live in their own section of the site, which is how we split the site into distinct editorial verticals.

It uses prc-taxonomies for categorization and otherwise flows through publishing and search like any other content.

prc-page-like-types

Creates page-style content types such as Courses, Press Releases, and Events. These are standalone pages rather than dated articles, used for evergreen, structured sections.

prc-collections

A hybrid of a post and a category. Editors use it to curate groups of related content around a theme, topic, research initiative, or special project. Collections are how we tell a bigger story by bundling many pieces together.

It pulls content from across all content types and uses prc-taxonomies to organize it.

prc-datasets

Manages downloadable research datasets. It pairs a content type with a digital-rights layer that controls who can access dataset files, which is central to how Pew shares its underlying data responsibly.

It works with user accounts and permissions to gate downloads, and with search so datasets are discoverable.

prc-homepages

Lets editors create, schedule, preview, and version the site's homepage. Rather than editing the live homepage directly, a team can stage a new version, preview it, and have it go live automatically at the right time, with a full history of past versions kept along the way.

It works alongside the publishing and workflow plugins and uses the block library to lay out each homepage.

prc-staff-bylines

Manages staff profiles and author bylines and keeps the two in sync. It's behind the multi-author experience: accurate attribution, author pages, and contributor lists.

Every content type uses it wherever authorship shows up.

prc-report-package

Manages "report packages," the relationships and supporting materials that make up a multi-part research report (chapters, appendices, related files). Its job is keeping the pieces of a large report connected.

It works with content types and collections to assemble and present a complete report.


Editorial workflow & publishing

These shape the day-to-day work of writing, reviewing, scheduling, and shipping content.

prc-post-publish-pipeline

The plumbing behind a post's life: first draft, edits, publish, updates, unpublishing, and trashing. It gives engineers reliable hooks that fire exactly when expected, so downstream automations like notifications, syndication, and cache clearing run at the right moment.

A lot of other plugins hang their automated behavior off this pipeline. When you hear "when X happens to a post, do Y," this is usually where it happens.

prc-publish-workflows

Editorial and production workflow tools: a publication checklist, a workflow-status label system, watcher-based notifications, and a Status Board and Calendar view for planning. It helps teams see what's in progress and what's ready to ship.

It builds on the publish pipeline and sends its notifications through prc-slack.

prc-publication-listing

Handles the queries and visibility rules for listing publications across the site, deciding which posts show up where. It's behind most of the "latest research" style listings.

It leans on search (prc-elasticpress) and the content types.

prc-public-post-preview

Lets the team share a private preview link so outside reviewers can see a post before it publishes, with control over when each link expires. Good for stakeholder sign-off without handing someone a full account.

prc-revisions

A public-facing versioning system with a fork-and-merge workflow, so updates to published research can be drafted, tracked, and merged out in the open. It's how we correct and update reports while keeping the history intact.

It builds on WordPress's revision system and the publish pipeline.

prc-attachments-inspector

Adds an editor panel for dragging, dropping, and searching media to drop into posts, plus an Attachments Report that social editors and other stakeholders can review from the edit screen. It makes working with images and files less of a chore.

prc-art-direction

Lets editors pick multiple images for a post so different layouts can each show the right one. A homepage card and the article header can use different crops, for example. The result is more polished, context-aware imagery.

Display blocks in prc-block-library, like Story Item blocks, pull from the images it stores.

Editorial tools and blocks for curating and showing related content, both hand-picked and automatic. It keeps readers moving from one relevant piece to the next.

It uses taxonomies and search to suggest relationships, then surfaces them through configurable blocks.

prc-block-area-modules

A curated way to put editor-managed content into fixed areas of the theme: sidebars, promotional slots, recurring modules. Editors get control over those recurring placements without touching code.


Search & discovery

How readers and editors find content across a very large site.

prc-elasticpress

Canonical ElasticPress / VIP Search integration: search relevance and hardening, plus advanced filtering (topic, format, date, and so on) via prc-ep/* facet blocks that use form-input controls from prc-block-library. Listing and search pages rely on it behind the scenes.

prc-elasticpress-external-content

Extends that search engine to also index the contents of external files, like attached documents, so material that isn't a normal web page can still turn up in search.


Data visualization & interactives

Pew is known for its charts and interactives. This cluster is how we make them.

prc-charting-library

The charting engine for the block editor, the shared foundation that knows how to render different chart types. On its own it's infrastructure; editors meet it through the Chart Builder.

The Chart Builder and the other charting plugins depend on it, so it has to load first.

prc-chart-builder

The editor-facing tool for building interactive D3 charts directly in WordPress. It's what an editor actually opens to make a bar chart, a line chart, or a map.

It sits on top of prc-charting-library and outputs chart blocks you can drop into articles.

prc-custom-charts

A home for bespoke, one-off chart components that don't fit the standard types: special visualizations built for a specific project.

prc-block-tables

Table blocks for the platform, like the Power Table, with more planned. It gives editors richer, more capable tables than plain HTML.

prc-interactive-features

A framework for building and managing the data visualizations, maps, databases, and other custom interactives Pew is known for. It gives engineers consistent scaffolding for shipping complex, one-off experiences.

It's often paired with prc-embeds and prc-firebase for delivery and live data.

prc-embeds

Provides iframe-based embedding so charts, interactives, and other content can drop into other pages or get shared externally as standalone embeds. This is how an interactive becomes a reusable, shareable widget.

prc-quote-sorter-builder

Lets editors build sortable "quote walls" from data: interactive displays where readers explore quotes. A focused, single-purpose interactive.


Quizzes & typologies

A specialized family for Pew's signature interactive quizzes.

prc-quiz-builder

A block-based tool for building interactive quizzes inside the editor. It's the general-purpose engine behind Pew's quizzes and typology tools.

The typology quiz plugins below extend it for specific projects.

prc-quiz-cast

Lets a quiz session be "cast" to a large screen with real-time audience participation, for example at a live event. Firebase handles the live interaction.

It depends on prc-quiz-builder and prc-firebase.

prc-quiz-political-typology-2026

Project-specific plugin that adds the questions, scoring, and logic for the 2026 Political Typology quiz. It customizes the general quiz builder for one of Pew's flagship products.

prc-quiz-religious-typology

The same idea as the political typology plugins, but for the Religious Typology quiz.

prc-religious-landscape-study

Powers the Religious Landscape Study, a major recurring research product with its own interactive presentation needs.

It draws on the charting, interactive, and data plugins to present its findings.


Distribution & syndication

Getting Pew's content out beyond pewresearch.org.

prc-apple-news

Publishes PRC content to Apple News through Apple's API, so articles reach that audience automatically.

The publish pipeline triggers it, and prc-external-channels manages it alongside the other channels.

prc-external-channels

The control center for outbound distribution to channels like Apple News, podcasts, and other syndication targets. It coordinates where content goes after it publishes.

prc-social-builder

A tool for composing, previewing, and publishing social media packages: the text and imagery used to promote a piece across social platforms. It brings social promotion into the same editorial flow as everything else.

prc-email-builder

Authoring and delivery for email. Teams build newsletters and other email content inside the platform and send it from there. Pew's email program lives here.

prc-spoken-article

Adds an audio player block for AI-generated narration of an article, so content is available to listen to as well as read.

It pairs with the AI and content plugins that generate the narration.

prc-markdown-for-agents

Serves articles as clean Markdown, through special URLs and request headers, so AI agents and tools can read our content in a machine-friendly format. It's part of making Pew's content usable by AI systems.


AI & automated content

Newer capabilities that bring AI into editorial and research work.

prc-content-transformer

AI-powered middleware that reshapes WordPress content into whatever format a downstream service or AI provider needs. Think of it as a translator that adapts our content on demand.

Features like spoken articles and agent-facing outputs use it.

Analyzes trending news using a news API plus AI, then posts what it finds to the team in Slack. It's an internal awareness helper for editors.

It uses prc-slack to deliver.

prc-pdf-extraction

Pulls text out of PDF documents using OCR (optical character recognition), turning scanned or document content into usable text. Handy for getting research documents into the platform and into search.

Its output feeds search and AI workflows.


SEO, schema & findability

Helping search engines, and increasingly AI, understand and rank our content.

prc-schema-seo

Adds schema.org structured data and SEO metadata so search engines understand each page better. It shapes how Pew shows up in Google and other search results.

prc-schema-sitemap

Generates the sitemaps that tell search engines about all our content, originally built with several partners and WordPress VIP. It makes sure crawlers don't miss anything.

prc-schema-academic-identity

Manages academic identity metadata such as DOIs and ORCIDs, connecting Pew's research to scholarly identifier systems. It matters for citation and academic credibility.


Users, privacy & analytics

Who's visiting, what they consent to, and how we measure it.

prc-user-accounts

A block-first user system that ties Firebase to WordPress: registration, login, profiles, content gating, and user data tracking, built to work with our caching. It's the foundation for any logged-in experience, including gated datasets.

It depends on prc-firebase and connects to plugins that gate content, such as prc-datasets.

prc-user-surveys

A flexible framework for embedding survey tools into pages through blocks. It lets us gather reader feedback in a consistent, manageable way.

Manages privacy and cookie consent so the platform respects user choices and stays in line with privacy expectations.

It coordinates with analytics so tracking honors what a user has agreed to.

prc-analytics

Manages the site's analytics integrations (Parse.ly, predictive response, and others) and keeps how we measure traffic and engagement in one place.

It works with prc-privacy-consent so measurement respects consent.

prc-firebase

Provides Google Firebase functionality, real-time data and services, to other plugins as a shared module. It's underneath our live, interactive, and account features.

prc-user-accounts, prc-quiz-cast, and various interactives all use it.


Internal tools & integrations

Mostly things that help the team rather than the public reader.

prc-slack

A shared way for any plugin to send messages into Slack. It's the common pipe for workflow alerts and automated updates.

prc-publish-workflows, prc-agents-trending-news, and others use it.

prc-help-center

An in-editor Help Center where staff can search and read documentation without leaving the editor, so guidance sits right where the work happens.

Its content comes from DocsPress pages on the docs site (PRC_DOCS_SITE_ID).

prc-wiki

The retired internal wiki. Help Center and staff docs now live on the DocsPress site.

prc-lookbook

An internal content-discovery tool for editorial staff: a filterable grid of published content organized by Level of Effort, Primary Audience, and Information Type. Editors use it to browse and learn from past work when planning something new.


Legacy & maintenance

Plumbing that keeps older content healthy as the platform evolves.

prc-legacy-content

Handles content and styling problems left over from past site migrations, smoothing out inconsistencies so older articles still display correctly today.

Lightweight single-file helpers

One prc- entry is a tiny single-file utility rather than a full plugin. prc-non-public-redirect handles redirects for content that isn't meant to be public. Producers rarely touch it directly.


A few things worth remembering

A handful of patterns will save you time once they click:

Foundations ripple outward. A change to prc-scripts, prc-block-library, prc-icon-library, or prc-taxonomies can touch many features at once, so scope and test those carefully.

The publish pipeline is the hub. Most "when content is published, then do something" behavior, like syndication, notifications, and search indexing, runs through prc-post-publish-pipeline.

Search and filtering are a team sport. prc-elasticpress handles ElasticPress search, relevance, and filters, while prc-block-library provides the on-screen form-input controls. A change in one usually touches the other.

Charts, quizzes, and interactives follow a library-plus-builder split. The library is the engine and the builder is the tool editors actually open. Project-specific plugins like the typology quizzes and custom charts extend those general tools.

AI and machine-readability keep coming up. prc-markdown-for-agents, prc-content-transformer, prc-agents-trending-news, and prc-spoken-article all point at the same shift: making Pew's content usable by AI and in new formats.

Was this helpful?