register_post_status

Definition:
function register_post_status($post_status, $args = array() {}

Register a post type. Do not use before init.
A simple function for creating or modifying a post status based on the parameters given. The function will accept an array (second optional parameter), along with a string for the post status name.

Parameters

  • string $post_status: Name of the post status.
  • array|string $args: See above description.

Source code

function register_post_status($post_status, $args = array()) {

	global $wp_post_statuses;



	if (!is_array($wp_post_statuses))

		$wp_post_statuses = array();



	// Args prefixed with an underscore are reserved for internal use.

	$defaults = array('label' => false, 'label_count' => false, 'exclude_from_search' => null, '_builtin' => false, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false, 'public' => null, 'internal' => null, 'protected' => null, 'private' => null, 'show_in_admin_all' => null, 'publicly_queryable' => null, 'show_in_admin_status_list' => null, 'show_in_admin_all_list' => null, 'single_view_cap' => null);

	$args = wp_parse_args($args, $defaults);

	$args = (object) $args;



	$post_status = sanitize_key($post_status);

	$args->name = $post_status;



	if ( null === $args->public && null === $args->internal && null === $args->protected && null === $args->private )

		$args->internal = true;



	if ( null === $args->public  )

		$args->public = false;



	if ( null === $args->private  )

		$args->private = false;



	if ( null === $args->protected  )

		$args->protected = false;



	if ( null === $args->internal  )

		$args->internal = false;



	if ( null === $args->publicly_queryable )

		$args->publicly_queryable = $args->public;



	if ( null === $args->exclude_from_search )

		$args->exclude_from_search = $args->internal;



	if ( null === $args->show_in_admin_all_list )

		$args->show_in_admin_all_list = !$args->internal;



	if ( null === $args->show_in_admin_status_list )

			$args->show_in_admin_status_list = !$args->internal;



	if ( null === $args->single_view_cap )

		$args->single_view_cap = $args->public ? '' : 'edit';



	if ( false === $args->label )

		$args->label = $post_status;



	if ( false === $args->label_count )

		$args->label_count = array( $args->label, $args->label );



	$wp_post_statuses[$post_status] = $args;



	return $args;

}

2673

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: