函数原型
register_post_status( string $post_status, array|string $args = array() ): object
函数描述
Registers a post status. Do not use before init.
是否弃用
未弃用
函数参数
-
$post_status
string
Required - Name of the post status.
-
$args
array|string
Optional - Array or string of post status arguments.
labelbool|stringA descriptive name for the post status marked for translation. Defaults to value of $post_status.label_countarray|falseNooped plural text from _n_noop() to provide the singular and plural forms of the label for counts. Default false which means the$labelargument will be used for both the singular and plural forms of this label.exclude_from_searchboolWhether to exclude posts with this post status from search results. Default is value of $internal._builtinboolWhether the status is built-in. Core-use only.
Default false.publicboolWhether posts of this status should be shown in the front end of the site. Default false.internalboolWhether the status is for internal use only.
Default false.protectedboolWhether posts with this status should be protected.
Default false.privateboolWhether posts with this status should be private.
Default false.publicly_queryableboolWhether posts with this status should be publicly- queryable. Default is value of $public.show_in_admin_all_listboolWhether to include posts in the edit listing for their post type. Default is the opposite value of $internal.show_in_admin_status_listboolShow 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 the opposite value of $internal.date_floatingboolWhether the post has a floating creation date.
Default to false.
Default:
array()
函数返回值
object
函数位置
File: wp-includes/post.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,
'date_floating' => 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 ( null === $args->date_floating ) {
$args->date_floating = false;
}
if ( false === $args->label ) {
$args->label = $post_status;
}
if ( false === $args->label_count ) {
// phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralSingle,WordPress.WP.I18n.NonSingularStringLiteralPlural
$args->label_count = _n_noop( $args->label, $args->label );
}
$wp_post_statuses[ $post_status ] = $args;
return $args;
}
源码链接
变更日志
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |

