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>
		';
	}
}
?>

Submit a Comment

Your email address will not be published. Required fields are marked *