How to create a custom status?
How can I create a custom status for a custom post type (‘places’ in this example):
Add this function to your plugin or function file:
<?php
/*
* Create Custom Status 'removed' for CPT 'places'
*/
// add custom status for Places to edit post
add_action( 'init', 'wpster_custom_post_status' );
function wpster_custom_post_status(){
register_post_status( 'removed', array(
'label' => _x( 'Removed', 'post' ),
'public' => true,
'show_in_admin_all_list' => false,
'show_in_admin_status_list' => true,
'label_count' => _n_noop( 'Removed <span class="count">(%s)</span>', 'Removed <span class="count">(%s)</span>' )
) );
}
// add custom status in quick edit post select bar for Places
add_action('admin_footer-edit.php','wpster_append_post_status_quickedit');
function wpster_append_post_status_quickedit() {
echo "<script>
jQuery(document).ready( function() {
jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"removed\">Removed</option>' );
});
</script>";
}
// add custom status in post select bar for Places
add_action('admin_footer-post.php', 'wpster_append_post_status_edit');
function wpster_append_post_status_edit(){
global $post;
$complete = '';
$label = '';
if($post->post_type == 'places'){
if($post->post_status == 'removed'){
$complete = ' selected="selected"';
$label = '<span id="post-status-display">Removed</span>';
}
echo '
<script>
jQuery(document).ready(function($){
$("select#post_status").append("<option value=\"removed\" '.$complete.'>Removed</option>");
$(".misc-pub-section label").append("'.$label.'");
});
</script>
';
}
}
?>