WordPress at a glance

register_post_status() WP 1.0

Register a post status. 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.

Arguments prefixed with an _underscore shouldn't be used by plugins and themes.

  • Global. Array. $wp_post_statuses Inserts new post status object into the list

No Hooks.

Return

Object.

Usage

register_post_status( $post_status, $args );
$post_status(string) (required)
Name of the post status.
$args(array/string)

Array or string of post status arguments.

  • $label (true/false/string)
    A descriptive name for the post status marked for translation.
    Default: value of $post_status

  • $label_count (true/false/array)
    Descriptive text to use for nooped plurals. Default array of $label, twice

  • $exclude_from_search (true/false)
    Whether to exclude posts with this post status from search results.
    Default: value of $internal

  • $_builtin (true/false)
    Whether the status is built-in. Core-use only.
    Default: false

  • $public (true/false)
    Whether posts of this status should be shown in the front end of the site.
    Default: false

  • $internal (true/false)
    Whether the status is for internal use only.
    Default: false

  • $protected (true/false)
    Whether posts with this status should be protected.
    Default: false

  • $private (true/false)
    Whether posts with this status should be private.
    Default: false

  • $publicly_queryable (true/false)
    Whether posts with this status should be publicly- queryable.
    Default: value of $public

  • $show_in_admin_all_list (true/false)
    Whether to include posts in the edit listing for their post type.
    Default: value of $internal

  • $show_in_admin_status_list (true/false)
    Show in the list of statuses with post counts at the top of the edit listings, e.g. All (12) | Published (9) | My Custom Status (2) Default is value of $internal.

Default: array()

Code of register_post_status: wp-includes/post.php VER 5.0.1

<?php
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,
		'public' => null,
		'internal' => null,
		'protected' => null,
		'private' => null,
		'publicly_queryable' => null,
		'show_in_admin_status_list' => null,
		'show_in_admin_all_list' => null,
	);
	$args = wp_parse_args($args, $defaults);
	$args = (object) $args;

	$post_status = sanitize_key($post_status);
	$args->name = $post_status;

	// Set various defaults.
	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 ( false === $args->label )
		$args->label = $post_status;

	if ( false === $args->label_count )
		$args->label_count = _n_noop( $args->label, $args->label );

	$wp_post_statuses[$post_status] = $args;

	return $args;
}

Related Functions

From tag: WP extension (enhancement)

More from tag: statuses (of post comment user)

More from category: Posts, pages...

No comments
    Hello, !     Log In . Register