PHPackages                             content-pilot/public-post-preview - 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. content-pilot/public-post-preview

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

content-pilot/public-post-preview
=================================

WordPress plugin to allow anonymous users to preview a post before it is published.

2.9.4(4y ago)01.4kGPL-2.0-or-laterPHPPHP &gt;=5.6

Since Jul 20Pushed 2y agoCompare

[ Source](https://github.com/content-pilot/public-post-preview)[ Packagist](https://packagist.org/packages/content-pilot/public-post-preview)[ Docs](https://wordpress.org/plugins/public-post-preview/)[ GitHub Sponsors](https://github.com/ocean90)[ RSS](/packages/content-pilot-public-post-preview/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (10)Used By (0)

Public Post Preview
===================

[](#public-post-preview)

WordPress plugin to share a link to anonymous users to preview a draft of a post (or any other public post type) before it is published.

Have you ever been writing a post with the help of someone who does not have access to your blog and needed to give them the ability to preview it before publishing? This plugin takes care of that by generating an URL with an expiring nonce that can be given out for public preview.

[![](https://camo.githubusercontent.com/f229318d7feb0a45ac68cb7bd22d2b71085f46d3498c5452479fcf1a0046af49/68747470733a2f2f70732e772e6f72672f7075626c69632d706f73742d707265766965772f6173736574732f73637265656e73686f742d312e706e673f7265763d31393831323432)](https://camo.githubusercontent.com/f229318d7feb0a45ac68cb7bd22d2b71085f46d3498c5452479fcf1a0046af49/68747470733a2f2f70732e772e6f72672f7075626c69632d706f73742d707265766965772f6173736574732f73637265656e73686f742d312e706e673f7265763d31393831323432)

*This plugin was previously maintained by [Matt Martz](http://profiles.wordpress.org/sivel/) and was an idea of [Jonathan Dingman](http://profiles.wordpress.org/jdingman/). Thanks to Hans Dinkelberg for his [photo](http://www.flickr.com/photos/uitdragerij/7516234430/).*

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

[](#installation)

Note: There will be NO settings page.

For an automatic installation through WordPress:

1. Go to the 'Add New' plugins screen in your WordPress admin area
2. Search for 'Public Post Preview'
3. Click 'Install Now' and activate the plugin

For a manual installation via FTP:

1. Upload the `public-post-preview` directory to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' screen in your WordPress admin area

To upload the plugin through WordPress, instead of FTP:

1. Upload the downloaded zip file on the 'Add New' plugins screen (see the 'Upload' tab) in your WordPress admin area and activate.

Usage
-----

[](#usage)

- To enable a public post preview check the box in the "Status &amp; Visibility" section of the document settings. In the classic editor it's in the "Publish" meta box.
- The link will be displayed if the checkbox is checked, you can copy and share the link with your friends.
- To disable a preview uncheck the box again.

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

[](#frequently-asked-questions)

**I can't find the option for preview links. Where is it?**

The checkbox is only available for non-published posts and once a post was saved as a draft.

**After some time the preview link returns the message "The link has been expired!". Why?**

The plugin generates an URL with an expiring nonce. By default a link "lives" 48 hours. After 48 hours the link is expired and you need to copy and share a new link which is automatically generated on the same place under the editor.

**48 hours are not enough to me. Can I extend the nonce time?**

Yes, of course. You can use the filter `ppp_nonce_life`. Example for 5 days:

```
add_filter( 'ppp_nonce_life', 'my_nonce_life' );
function my_nonce_life() {
	return 60 * 60 * 24 * 5; // 5 days
}

```

Or use the [Public Post Preview Configurator](https://wordpress.org/plugins/public-post-preview-configurator/).

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 77.9% of commits — single point of failure

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 ~294 days

Total

4

Last Release

1601d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8bcccd3cbd901189353197aa62d7d0b5cb901cac763ad3ea43c378497c40c8d4?d=identicon)[content-pilot-user](/maintainers/content-pilot-user)

---

Top Contributors

[![ocean90](https://avatars.githubusercontent.com/u/617637?v=4)](https://github.com/ocean90 "ocean90 (166 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (23 commits)")[![sivel](https://avatars.githubusercontent.com/u/39340?v=4)](https://github.com/sivel "sivel (13 commits)")[![JeroenSormani](https://avatars.githubusercontent.com/u/5774447?v=4)](https://github.com/JeroenSormani "JeroenSormani (6 commits)")[![claytoncollie](https://avatars.githubusercontent.com/u/4236538?v=4)](https://github.com/claytoncollie "claytoncollie (1 commits)")[![westonruter](https://avatars.githubusercontent.com/u/134745?v=4)](https://github.com/westonruter "westonruter (1 commits)")[![peterwilsoncc](https://avatars.githubusercontent.com/u/519727?v=4)](https://github.com/peterwilsoncc "peterwilsoncc (1 commits)")[![rcstr](https://avatars.githubusercontent.com/u/532402?v=4)](https://github.com/rcstr "rcstr (1 commits)")[![rodrigo-arias](https://avatars.githubusercontent.com/u/11416255?v=4)](https://github.com/rodrigo-arias "rodrigo-arias (1 commits)")

---

Tags

forkthird-partywordpress-plugin

### Embed Badge

![Health badge](/badges/content-pilot-public-post-preview/health.svg)

```
[![Health](https://phpackages.com/badges/content-pilot-public-post-preview/health.svg)](https://phpackages.com/packages/content-pilot-public-post-preview)
```

###  Alternatives

[benjaminhirsch/nova-slug-field

A Laravel Nova field to generate a slugs.

1401.1M11](/packages/benjaminhirsch-nova-slug-field)[naif/toggle

A Laravel Nova toggle switch field for Nova 3

2671.5k](/packages/naif-toggle)

PHPackages © 2026

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