Title: WP Custom Status Manager
Author: giangel84
Published: <strong>Est 27, 2019</strong>
Last modified: Ebrel 3, 2026

---

Search plugins

![](https://ps.w.org/hw-wp-status-manager/assets/banner-772x250.png?rev=3497907)

![](https://ps.w.org/hw-wp-status-manager/assets/icon-256x256.jpg?rev=3497907)

# WP Custom Status Manager

 By [giangel84](https://profiles.wordpress.org/giangel84/)

[Download](https://downloads.wordpress.org/plugin/hw-wp-status-manager.2.0.0.zip)

 * [Details](https://cor.wordpress.org/plugins/hw-wp-status-manager/#description)
 * [Reviews](https://cor.wordpress.org/plugins/hw-wp-status-manager/#reviews)
 *  [Installation](https://cor.wordpress.org/plugins/hw-wp-status-manager/#installation)
 * [Development](https://cor.wordpress.org/plugins/hw-wp-status-manager/#developers)

 [Support](https://wordpress.org/support/plugin/hw-wp-status-manager/)

## Description

With this plugin you can create, edit and delete, your custom statuses for the WordPress
post types.
 Manage separately groups of status, for each CPT (Custom post type)
you can add unlimited numbers of statuses. It help admins to have more customized
CPT areas for all the projects that need one ore more custom post type. You can’t
create CPT, register them manually ore use another plugin like Toolset Types. You
can’t modify the standard core statuses (Draft, Publish, Private, Future), but you
can hide them just with a click!

#### Localization

 * English (default) – always included
 * Italian – always included
 * .pot file (‘hw-wp-status-manager.pot’) for translators is also always included

### Donate

If you like this plugin and want to support my work, you can make a donation at 
this address: https://www.paypal.com/donate?hosted_button_id=DEFQGNU2RNQ4Y – Thank
you very much!

### Contributors & Developers

[Translate “WP Custom Status Manager” into your language](https://translate.wordpress.org/projects/wp-plugins/hw-wp-status-manager).

## Installation

 * Install the Plugin and Activate it.
 * Go to WP Custom Status Manager settings page from the left menu.
 * Click one post type from the list to add a new custom status for that CPT.
 * Read the FAQs to understand how the plugin work.
 * That’s all! Enjoy.

## FAQ

### How it works?

It’s easy:
 Imagine you have a CPT called “Invoices”, you can create the status “
Paid”, “Not Paid” and “Canceled”. You can hide the standard core’s statuses like“
Draft”, “Publish”, “Private”, to have only the custom statuses and a cleaner dropdown.
The plugin use the native “register_post_status” WP function to register your custom
statuses. It implement a way to show the statuses on the dropdown while editing 
the post, using jQuery, a feature that WP doesn’t support yet natively with the “
register_post_status” function. Most part of plugin use Ajax calls, be sure jQuery
is active on admin dashboard and that not any other plugin is breaking it.

### How to create a new status?

 * Go to WP Custom Status Manager settings page from the left menu in admin dashboard.
 * From the table’s list, click on the post type name.
 * A modal dialog windows will open.
 * Just put the name of your new custom status and save it.

### How can I hide the standard core’s statuses for a specific CPT?

From the CPT list, click “No” on the column “Hide core status”, to switch the option
to “Yes”.
 Go to your CPT and now you should see only custom statuses on the dropdown.

### Why the “Publish” button now say “Update” ?

Don’t worry, this is a normal behaviour of the plugin:
 Classic “Publish” button
disappear for that specific post type, if you decide to hide its core statuses.

Full explanation with example:
 When you push the “publish” button, WordPress set
the new post status to “Published”, regardless of the current status is: that’s 
ok if you ‘re using the core statuses, and you really want to set the “Publish” 
status to the post, but since you decided to hide the core statuses it means that
you don’t really need the “Publish” status, right? In this case, to avoid mistakes
and habit actions, such as “Publish” button is intended as “save the post”, the “
Publish” button come hidden and another button is shown, by the way, it does the
same things as “Save draft” button (that update the post without changing the status
to another one).

### What happen if I delete a custom status?

Whether you delete a custom status, simply it will no longer registered as a WP 
recognisable status.
 So all the posts previously sets with the deleted status, 
they still on the database, but you’ll not be able to show them in the list of posts.
You can re-create the status as prevoius was, using exactly the same singular label,
and magically all the posts will show again.

### Why I cannot modify the singular label of a status?

That’s because once you create the status, the singular label is used by WP to generate
the status-slug.
 The status-slug is used to store the status of a post when you
save or edit it. So if you should edit the singular label of the status “paid” to“
sold”, you’ll no longer able to show every post with the “paid” status. So to avoid
this action, you can’t edit the singular label, just the plural. Maybe in a future
version of the plugin, will made a functional code which change all the post’s statuses
according to the edit done to the singular label.

### Can I test the plugin and then remove all data for a clean uninstall?

Yeah of course you can do it.
 Use the button “I understand, reset all options and
data” to delete all datas safety, and disable the plugin. Then delete it manually
from your WP Plugin’s list.

## Reviews

![](https://secure.gravatar.com/avatar/0750c31ad2e4acbd1e971a549974bf676de83ffafccd57e2dd7e2139fdd9e88d?
s=60&d=retro&r=g)

### 󠀁[Perfect and it works!](https://wordpress.org/support/topic/perfect-and-it-works/)󠁿

 [Jose Mortellaro](https://profiles.wordpress.org/giuse/) Meurth 3, 2020

Amazing plugin! And it does what it says. Thank for sharing your beautiful plugin.

![](https://secure.gravatar.com/avatar/f9efb3dd6be130a6599228fb98ee6c48b83ffa883f4bb79737fdfa36b20af3a6?
s=60&d=retro&r=g)

### 󠀁[Hi I’m the developer!](https://wordpress.org/support/topic/hi-im-the-developer/)󠁿

 [giangel84](https://profiles.wordpress.org/giangel84/) Est 27, 2019

Sometimes I need to develop projects who require some custom post type, and often
the standard core statuses (Draft, Publish, Private) are not enough to manage them.
Tired to write a tons of code in my functions.php template’s file, I made this light
plugin to manage the statuses easily and without errors. It work fine and it will
be updated as well as wordpress will in the future, since I use it in many customer’s
project.

 [ Read all 2 reviews ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/)

## Contributors & Developers

“WP Custom Status Manager” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ giangel84 ](https://profiles.wordpress.org/giangel84/)

“WP Custom Status Manager” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/hw-wp-status-manager/contributors)
for their contributions.

[Translate “WP Custom Status Manager” into your language.](https://translate.wordpress.org/projects/wp-plugins/hw-wp-status-manager)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/hw-wp-status-manager/),
check out the [SVN repository](https://plugins.svn.wordpress.org/hw-wp-status-manager/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/hw-wp-status-manager/)
by [RSS](https://plugins.trac.wordpress.org/log/hw-wp-status-manager/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.0.0

 * Gutenberg / Block Editor support: custom statuses now appear in the block editor
   sidebar via a dedicated panel
 * Custom statuses are registered on the ‘init’ hook instead of ‘admin_init’, enabling
   frontend and REST API compatibility
 * REST API support: custom statuses can be saved through the WordPress REST API(
   required by Gutenberg)
 * Dashboard UI overhaul: “Hide core status” column now uses a modern toggle switch
   instead of Yes/No text links
 * Dashboard UI overhaul: “Registered Custom Statuses” column now displays a clean
   sub-table with status name and edit icon
 * Improved edit status popup with better layout, field grouping, grid-based options,
   and styled action buttons
 * Post type filter: collapsible panel to show/hide specific post types from the
   main table (all visible by default)
 * Post types now show their human-readable label alongside the slug
 * Security fix: all SQL queries now use $wpdb->prepare() to prevent SQL injection
 * Security fix: replaced raw unserialize() with maybe_unserialize()
 * Security fix: output escaping with esc_html(), esc_attr(), esc_js() to prevent
   XSS
 * Bug fix: operator precedence error in hide_core_statuses toggle (sanitize was
   applied to comparison result, not to value)
 * Bug fix: removed debug print_r() during plugin activation
 * Bug fix: removed usage of deprecated FILTER_SANITIZE_STRING (PHP 8.1+)
 * Bug fix: fixed undefined $debug_data variable in error responses
 * Bug fix: version constant now matches plugin header version
 * Bug fix: fixed missing closing bracket in jQuery selector for publish button
 * Code quality: uses $wpdb->update() and $wpdb->insert() with format arrays instead
   of raw query interpolation
 * Code quality: proper WP_DEBUG constant check
 * UI/UX totally reviewed
 * Ask for Sync post status when change status name/slug
 * Totally compatible with your previous data/configuration

#### 1.0.5

 * Fix deprecated notice with PHP 8

#### 1.0.4

 * Fixed some warnings
 * Conversion of db values from JSON to Serialized strings
 * New admin menu dash-icon (Flag)

#### 1.0.3

 * Fixed table creation error on plugin activation

#### 1.0.2

 * Fixed warning error in hw_wp_status_manager_get_custom_statuses() function while
   it return a not-array value
 * Changed Plugin’s name to help users to find it easier, in wp repository

#### 1.0.1

 * Fixed static boolean values in Register status
 * Translation fix

#### 1.0.0

 * First stable release

## Meta

 *  Version **2.0.0**
 *  Last updated **2 weeks ago**
 *  Active installations **30+**
 *  WordPress version ** 6.0.1 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 8.2 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/hw-wp-status-manager/) and [Italian](https://it.wordpress.org/plugins/hw-wp-status-manager/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/hw-wp-status-manager)
 * Tags
 * [custom](https://cor.wordpress.org/plugins/tags/custom/)[manager](https://cor.wordpress.org/plugins/tags/manager/)
   [post type](https://cor.wordpress.org/plugins/tags/post-type/)[status](https://cor.wordpress.org/plugins/tags/status/)
 *  [Advanced View](https://cor.wordpress.org/plugins/hw-wp-status-manager/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/hw-wp-status-manager/reviews/)

## Contributors

 *   [ giangel84 ](https://profiles.wordpress.org/giangel84/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/hw-wp-status-manager/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.paypal.com/donate?hosted_button_id=DEFQGNU2RNQ4Y)