Framework
pods-framework/pods avatar
pods-framework/pods

Pods Framework: content types and fields for WordPress, without hand-built admin screens

The Pods Framework is a Content Development Framework for WordPress - It lets you create and extend content types that can be used for any project. Add fields of various types we've built in, or add your own with custom inputs, you have total control.

1,120 stars268 forksPHPGPL-2.0

At a glance

What is it?
Pods is a WordPress development framework for creating, extending, managing and deploying customised content types, with built-in field types, custom inputs and an admin interface for managing all of it. The practical questions for anyone adopting it are the two requirement floors, the plugin's own dependency weight, and the fact that three release lines are patched in parallel.
Who is it for?
Pods fits a WordPress project that needs structured content types with real fields, a repeatable admin interface and a way for editors to manage the data, without a team writing meta boxes and admin screens by hand. It does not fit a site that wants zero plugin dependencies, and it does not fit a team that cannot accept a plugin that maintains its own database tables.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Content types, fields, and an interface to manage them

Pods is described as a development framework for creating, extending, managing, and deploying customized content types in WordPress, and the repository description frames it as a Content Development Framework that lets you create and extend content types that can be used for any project. You can add fields of various types that come built in, or add your own with custom inputs, and the claim is total control.

That is the shape of the value. WordPress' own custom post type API gives you the post type and nothing else: the fields are post meta, the admin interface is whatever you build, and a repeatable group of anything means a custom table and a custom admin screen. Pods supplies the other half, the layer where a content type becomes something an editor can fill in.

The project is a WordPress plugin, published on the WordPress.org plugin directory, with a user guide and resources at pods.io and detailed setup instructions at docs.pods.io. The licence is GPL-2.0+, held by the Pods Foundation, Inc, which is the same arrangement as a great deal of WordPress plugin code and means the plugin's own licence travels with any derivative work.

The audience is a WordPress development team that has outgrown posts and pages and needs structured content, and the stated capability is that these content types can be used for any project, from a directory of people to a catalogue of parts to a set of case studies with structured metadata.

Two requirement floors, and the lower one comes with a warning

The requirements section is unusual in how plainly it states the risk of the lower option, and that plainness is worth reading before you install anything.

The recommended versions are WordPress 6.8+, PHP 8.2+, and MySQL 5.6+ or MariaDB 10.1+. The minimum versions, for people with restrictions on their server or site, are WordPress 6.3+, PHP 7.2+ and MySQL 5.5+. And the README says that running the following minimum versions does bring with it their own risks including security and exposure to additional bugs that may have been resolved by the recommended versions above.

That is a maintainer telling you plainly that the minimum floor is a compatibility statement, not a recommendation, and that a site pinned to it accepts known unfixed issues in the platform. It is unusual candour and it is the single most useful sentence in the README for an adopter.

The WordPress plugin directory badges track the same thing from the other direction, with separate badges for the required PHP version, the required WordPress version and the tested WordPress version. A plugin that distinguishes required from tested is telling you that the version it has been tested against is not the version it merely needs, and the difference between those two numbers is where the risk lives.

The other thing to check at the same time is what the plugin does to the database. A framework that stores custom field data in its own tables, rather than in post meta, is making a decision about your schema, and your ability to leave later depends on it.

The GitHub repository is not where you ask for support

The README draws a distinction that many plugin repositories do not, and it is worth internalising before you file anything.

This is where we develop Pods Framework itself and it should not be used for support questions. For those, the README points at the WordPress.org support forums or the project's Slack, with a support page that outlines everything for the plugins.

The reason is structural rather than administrative. A WordPress plugin serves thousands of sites running thousands of configurations, and the forum is where the questions are about a configuration rather than about the code. A GitHub issue on the framework repository is read by the people who write the framework, and a question about a site belongs somewhere the person who can answer it is already looking.

Bugs have their own door. If you find an issue that you believe to be a bug, the README points at a GitHub issue chooser rather than a plain new issue form, which is a small sign that the project triages incoming reports by kind.

Contributions are listed in four forms. Raise an issue, send a pull request, translate Pods into other languages through WP Translate, which needs only a wordpress.org account, and provide feedback on enhancements. The translation route is the most undervalued of the four, and the README says so by spelling out what it takes: sign in with your wordpress.org account and add translations where you can.

Three release lines, patched on the same day

The recent releases show something that the version numbers alone would hide. Three tags were published on 2026-08-31: 3.3.9.2, 3.2.8.4 and 3.1.4.3, all with a date in the release name, and each is a different release line.

That is a maintenance policy visible in the tag names, and it maps onto the branching scheme the README's developer notes describe. The stable branch is main, which is the latest release, and the release branches are named release/x.x.x, and each holds the code being worked on for a release that is not yet complete. Pull requests are to be submitted against main.

So the version in the WordPress plugin directory, the version on the main branch and the version of the release branch you are looking at are three different things, and a site administrator can legitimately be on any of them. For a plugin that stores custom content and adds admin screens, that is exactly the arrangement you want. A site pinned to an older line gets the security and compatibility fixes for that line without being forced through a major upgrade, and the three tags published on the same day are that policy doing its job.

The practical consequence for a developer is that main is not a development branch in the usual sense. It is the current release, and a pull request against it lands in the next patch of the current line rather than in a future major. If you are contributing a feature rather than a fix, the release/x.x.x branch is where the work accumulates.

The repository also has a deprecated directory, which is a useful convention to point out, because it means the code that is being kept for backwards compatibility is kept in one place rather than scattered through the plugin.

The build runs webpack, sass, jest and Codeception

The package.json describes a plugin with a front end that is compiled and tested, not just PHP.

The build scripts come in two variants, build-dev and build-production, each running a webpack configuration, webpack-dev.js or webpack.prod.js, followed by a stylesheet step. The stylesheet step is sass with --no-source-map and --style=compressed, compiling ui/styles/src into ui/styles/dist, with a watch variant. The lint script runs eslint over ui/js, and the jest script runs wp-scripts test-unit-js against a jest.config.js with a maxWorkers setting, plus a watch variant and a debug variant.

The rebuild script is the one to read if you are setting up a development environment. It removes node_modules, runs composer update, runs npm install and then runs the build, so a clean checkout and a rebuild converge on the same state. The engines field requires node >= 20.19.0 and npm >= 8.19.2, with engineStrict set, so a mismatched toolchain fails the install rather than producing a broken build.

The PHP side is tested with Codeception, and the repository carries three Codeception configuration files, a distribution one, an example one and one for slic, which suggests the test suite runs in more than one mode. There is a phpstan.neon for static analysis, a .phpcs.xml and a .phpcs.compat.xml for coding standards, a .scrutinizer.yml, and a .nvmrc and jest setup file for the JavaScript side.

The two CI badges in the README, one for Codeception tests and one for JS tests, mean the PHP and JavaScript halves of the plugin are tested separately, which is the arrangement you want for a codebase where a frontend regression and a backend regression are equally likely.

The alternative is writing the admin screens yourself

There is a real alternative to Pods, and it is worth being clear about the difference in approach rather than pretending Pods is the only way.

The alternative is to use WordPress' native custom post type and meta APIs and build the editing experience yourself, with a meta box, a block, or a set of custom admin pages. The difference in approach is where the cost sits.

Hand-rolling gives you total control with no plugin dependency, and the schema is entirely in post meta, which means it travels with the content and is easy to query from anywhere in WordPress, including code you did not write. The cost is that every field type is a piece of UI you have to build and maintain, a repeatable group of anything means a custom table and a custom screen, and the editor experience is only as good as the last person who worked on it.

Pods takes the other side of that trade. You get an admin interface, a library of field types, and repeatable fields without writing them, and the cost is a plugin in the stack that maintains its own tables and needs a compatible WordPress, PHP and database to run on.

There is a third option that sits between them, which is a field framework that stores everything in post meta and gives you a UI without a separate content type system. That is a different architecture with different trade-offs, and the choice between them is really a choice about where your content lives.

For a team that already lives in WordPress and wants structured content with an editor interface, Pods is the pragmatic answer. For a team with one specific data shape and strong opinions about the admin UI, writing it by hand is often less work than adapting to somebody else's.

Editorial conclusion

Pods fits a WordPress project that needs structured content types with real fields, a repeatable admin interface and a way for editors to manage the data, without a team writing meta boxes and admin screens by hand. It does not fit a site that wants zero plugin dependencies, and it does not fit a team that cannot accept a plugin that maintains its own database tables. Before you install, read the requirements section carefully and decide which floor you are running on, then check which release line the WordPress plugin directory is currently serving, because the repository publishes three in parallel.

Frequently asked questions

What does the Pods Framework do in WordPress?

Pods is a development framework for creating, extending, managing and deploying customised content types in WordPress. You can add fields of various built-in types or add your own with custom inputs, and it provides an interface for managing that content.

What are the minimum requirements for Pods?

The recommended versions are WordPress 6.8+, PHP 8.2+ and MySQL 5.6+ or MariaDB 10.1+. The minimum supported versions are WordPress 6.3+, PHP 7.2+ and MySQL 5.5+, and the README warns that running the minimum versions brings its own risks including security issues and additional bugs.

Where should I report a Pods bug or ask for support?

The README says the GitHub repository is where the framework itself is developed and should not be used for support questions, which go to the WordPress.org support forums or the project Slack. Bugs go to the GitHub issue chooser.

How does Pods handle release branches?

The stable branch is main, which is the latest release, and release branches named release/x.x.x hold the code being worked on for each release that is not yet complete. The README asks for all pull requests to be submitted against main, and the recent tags show 3.3.9.2, 3.2.8.4 and 3.1.4.3 all published on 2026-08-31.

What licence is the Pods Framework released under?

GPL-2.0+, held by the Pods Foundation, Inc, with the licence text in license.txt at the root of the repository. The plugin is also published in the WordPress.org plugin directory.

Official sources

  1. License: GPL-2.0
  2. pods-framework/pods on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pods-framework-pods.svg)](https://hysenlabs.com/projects/pods-framework-pods)

Was this useful?