PHPackages                             automattic/zoninator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. automattic/zoninator

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

automattic/zoninator
====================

Zone Editor

0.11.0(2mo ago)86552[14 issues](https://github.com/Automattic/zoninator/issues)[13 PRs](https://github.com/Automattic/zoninator/pulls)GPL-2.0-or-laterPHPPHP &gt;=7.4CI passing

Since Jan 31Pushed 1w ago114 watchersCompare

[ Source](https://github.com/Automattic/zoninator)[ Packagist](https://packagist.org/packages/automattic/zoninator)[ Docs](https://github.com/Automattic/zoninator/)[ RSS](/packages/automattic-zoninator/feed)WikiDiscussions develop Synced today

READMEChangelog (6)Dependencies (15)Versions (12)Used By (0)

Zone Manager (Zoninator)
========================

[](#zone-manager-zoninator)

Stable tag: 0.11.0
Requires at least: 6.4
Tested up to: 6.9
Requires PHP: 7.4
License: GPLv2 or later
License URI:
Tags: zones, post order, post list, posts, order, zonination, content curation, curation, content management
Contributors: batmoo, automattic, wpcomvip, pkevan, matthumphreys, potatomaster, jblz, nickdaugherty, betzster, garyj

Content curation made easy! Create "zones" then add and order your content!

Description
-----------

[](#description)

This plugin is designed to help you curate your content. It lets you assign and order stories within zones that you create, edit, and delete, and display those groupings of related stories on your site.

This plugin was originally built by [Mohammad Jangda](http://digitalize.ca) in conjunction with [William Davis](http://wpdavis.com/) and the [Bangor Daily News](http://www.bangordailynews.com/).

### Features

[](#features)

- Add, edit, and delete zones.
- Add and remove posts (or any custom post type) to or from zones.
- Order posts in any given zone.
- Limit capabilities on who can add, edit, and delete zones vs add content to zones.
- Locking mechanism, so only one user can edit a zone at a time (to avoid conflicts).
- Idle control, so people can't keep the zone locked.

Installation
------------

[](#installation)

1. Unzip contents and upload to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Go to Dashboard &gt; Zones to create and manage your zones, and easily search for and add existing posts.
4. Use the plugin's handy API functions to add zones to your theme that retrieve and display your content. Or, for those who are a bit code-averse, go to Appearance-Widgets and add Zone Posts widgets to display your zone posts in your sidebar or footer. The widget will pull the posts from the chosen zone.

### Usage examples

[](#usage-examples)

You can work with a zone's posts either as a `WP_Query` object or as a plain array.

**WP\_Query**

```
$zone_query = z_get_zone_query( 'homepage' );
if ( $zone_query->have_posts() ) :
	while ( $zone_query->have_posts() ) : $zone_query->the_post();
		echo '' . esc_html( get_the_title() ) . '';
	endwhile;
	wp_reset_postdata();
endif;
```

**Posts Array**

```
$zone_posts = z_get_posts_in_zone( 'homepage' );
foreach ( $zone_posts as $zone_post ) :
	echo '' . esc_html( get_the_title( $zone_post->ID ) ) . '';
endforeach;
```

For the full template-tag reference, see the [theme developer guide](https://github.com/Automattic/zoninator/blob/main/docs/theme-developers.md).

Documentation
-------------

[](#documentation)

Audience-targeted documentation lives in the GitHub repository:

- [Theme developer guide](https://github.com/Automattic/zoninator/blob/main/docs/theme-developers.md) — using zones in your theme.
- [Hooks reference](https://github.com/Automattic/zoninator/blob/main/docs/hooks.md) — every filter and action the plugin exposes.
- [REST API](https://github.com/Automattic/zoninator/blob/main/docs/rest-api.md) — endpoints under the `zoninator/v1` namespace, for headless integrations.
- [Contributing](https://github.com/Automattic/zoninator/blob/main/CONTRIBUTING.md) — local setup, tests, and PR conventions.
- [Security](https://github.com/Automattic/zoninator/blob/main/SECURITY.md) — responsible disclosure.

Frequently Asked Questions
--------------------------

[](#frequently-asked-questions)

### How do I disable the locking feature?

[](#how-do-i-disable-the-locking-feature)

You can use a filter:

```
add_filter( 'zoninator_zone_max_lock_period', 'z_disable_zoninator_locks' );
```

### How do I change the locking feature settings?

[](#how-do-i-change-the-locking-feature-settings)

Filter the following and change according to your needs:

- Number of seconds a lock is valid for, default `30`: `zoninator_zone_lock_period`
- Max idle time in seconds: `zoninator_zone_max_lock_period`

### Can anonymous users still read zones over the REST API?

[](#can-anonymous-users-still-read-zones-over-the-rest-api)

Not by default since version 0.11.0. The `GET /wp-json/zoninator/v1/zones` endpoint now requires an authenticated user. If your integration relied on anonymous access, you can restore the previous behaviour with the `zoninator_rest_get_zones_permissions_check` filter:

```
add_filter( 'zoninator_rest_get_zones_permissions_check', '__return_true' );
```

See the [REST API documentation](https://github.com/Automattic/zoninator/blob/main/docs/rest-api.md) for the full endpoint reference.

### Can I use Zoninator with custom post types?

[](#can-i-use-zoninator-with-custom-post-types)

Yes. Call `Zoninator()->register_zone_post_type( 'your_post_type' )` after `init` to add zone support to a custom post type.

Upgrade Notice
--------------

[](#upgrade-notice)

### 0.11.0

[](#0110)

The `GET /wp-json/zoninator/v1/zones` REST endpoint now requires an authenticated user. If your site depends on anonymous access, opt back in with the `zoninator_rest_get_zones_permissions_check` filter. Three security fixes are included — review the changelog before upgrading.

Changelog
---------

[](#changelog)

Please visit the [changelog](https://github.com/Automattic/zoninator/blob/main/CHANGELOG.md).

Screenshots
-----------

[](#screenshots)

1. Create and manage your zones and content through a fairly intuitive and familiar interface. [![Overview of a homepage slideshow zone showing the name and description, and two posts assigned to that zone](.wordpress-org/screenshot-1.png)](.wordpress-org/screenshot-1.png)
2. Zone editing
    [![Editing a food zone in Zoninator](.wordpress-org/screenshot-2.png)](.wordpress-org/screenshot-2.png)
3. Use the Zone Posts widget in the widgets area.
    [![A sidebar widget area with a couple of Zone Posts widgets](.wordpress-org/screenshot-3.png)](.wordpress-org/screenshot-3.png)
4. Output of the zone posts widgets.
    [![Sidebar front end with the links to posts showing](.wordpress-org/screenshot-4.png)](.wordpress-org/screenshot-4.png)

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance89

Actively maintained with recent releases

Popularity22

Limited adoption so far

Community35

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~600 days

Recently: every ~229 days

Total

6

Last Release

70d ago

PHP version history (2 changes)0.9PHP &gt;=5.6

0.10.0PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/ba7751eebec0f74a4963e9a062f49e58222b97872bf193d95f0505f3df321d09?d=identicon)[GaryJones](/maintainers/GaryJones)

![](https://www.gravatar.com/avatar/7c5869ecbb8e0eac7e8b8e0f3cf7bdd8d5fcdc4abc10a72281872c53f8639d44?d=identicon)[automattic](/maintainers/automattic)

---

Top Contributors

[![GaryJones](https://avatars.githubusercontent.com/u/88371?v=4)](https://github.com/GaryJones "GaryJones (147 commits)")[![mjangda](https://avatars.githubusercontent.com/u/86105?v=4)](https://github.com/mjangda "mjangda (43 commits)")[![ice9js](https://avatars.githubusercontent.com/u/8056203?v=4)](https://github.com/ice9js "ice9js (27 commits)")[![KingYes](https://avatars.githubusercontent.com/u/902548?v=4)](https://github.com/KingYes "KingYes (11 commits)")[![pgk](https://avatars.githubusercontent.com/u/500744?v=4)](https://github.com/pgk "pgk (9 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (9 commits)")[![jblz](https://avatars.githubusercontent.com/u/1587282?v=4)](https://github.com/jblz "jblz (9 commits)")[![bcampeau](https://avatars.githubusercontent.com/u/966849?v=4)](https://github.com/bcampeau "bcampeau (8 commits)")[![andfinally](https://avatars.githubusercontent.com/u/1647564?v=4)](https://github.com/andfinally "andfinally (7 commits)")[![brettshumaker](https://avatars.githubusercontent.com/u/1558827?v=4)](https://github.com/brettshumaker "brettshumaker (5 commits)")[![jasonbahl](https://avatars.githubusercontent.com/u/1260765?v=4)](https://github.com/jasonbahl "jasonbahl (5 commits)")[![trepmal](https://avatars.githubusercontent.com/u/251183?v=4)](https://github.com/trepmal "trepmal (5 commits)")[![sboisvert](https://avatars.githubusercontent.com/u/289193?v=4)](https://github.com/sboisvert "sboisvert (4 commits)")[![yolih](https://avatars.githubusercontent.com/u/8527034?v=4)](https://github.com/yolih "yolih (3 commits)")[![david-binda](https://avatars.githubusercontent.com/u/3651036?v=4)](https://github.com/david-binda "david-binda (3 commits)")[![pkevan](https://avatars.githubusercontent.com/u/2290623?v=4)](https://github.com/pkevan "pkevan (3 commits)")[![mboynes](https://avatars.githubusercontent.com/u/465154?v=4)](https://github.com/mboynes "mboynes (2 commits)")[![joshbetz](https://avatars.githubusercontent.com/u/300429?v=4)](https://github.com/joshbetz "joshbetz (2 commits)")[![raamdev](https://avatars.githubusercontent.com/u/53005?v=4)](https://github.com/raamdev "raamdev (2 commits)")[![rebeccahum](https://avatars.githubusercontent.com/u/16962021?v=4)](https://github.com/rebeccahum "rebeccahum (2 commits)")

---

Tags

wordpresswordpress-pluginwpvip-plugin

###  Code Quality

TestsPHPUnit

Static AnalysisRector

### Embed Badge

![Health badge](/badges/automattic-zoninator/health.svg)

```
[![Health](https://phpackages.com/badges/automattic-zoninator/health.svg)](https://phpackages.com/packages/automattic-zoninator)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.5k10](/packages/helsingborg-stad-municipio)[mediawiki/maps

Adds various mapping features to MediaWiki

84152.3k3](/packages/mediawiki-maps)[starcitizentools/citizen-skin

A beautiful, usable, responsive MediaWiki skin with in-depth extension support. Originally developed for the Star Citizen Wiki.

3376.6k](/packages/starcitizentools-citizen-skin)[civicrm/civicrm-drupal-8

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

19251.4k3](/packages/civicrm-civicrm-drupal-8)[altis/core

Core module for Altis

19228.0k3](/packages/altis-core)[pfefferle/wordpress-activitypub

The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.

5721.7k4](/packages/pfefferle-wordpress-activitypub)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
