register_post_status()
最后更新于:2021-11-27 21:36:15
register_post_status( string$post_status, array|string$args=array())Register 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.
-
‘label’
(bool|string) A descriptive name for the post status marked for translation. Defaults to value of $post_status. -
‘label_count’
(bool|array) Descriptive text to use for nooped plurals. Default array of $label, twice. -
‘exclude_from_search’
(bool) Whether to exclude posts with this post status from search results. Default is value of $internal. -
‘_builtin’
(bool) Whether the status is built-in. Core-use only. Default false. -
‘public’
(bool) Whether posts of this status should be shown in the front end of the site. Default false. -
‘internal’
(bool) Whether the status is for internal use only. Default false. -
‘protected’
(bool) Whether posts with this status should be protected. Default false. -
‘private’
(bool) Whether posts with this status should be private. Default false. -
‘publicly_queryable’
(bool) Whether posts with this status should be publicly- queryable. Default is value of $public. -
‘show_in_admin_all_list’
(bool) Whether to include posts in the edit listing for their post type. Default is the opposite value of $internal. -
‘show_in_admin_status_list’
(bool) 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 the opposite value of $internal. -
‘date_floating’
(bool) Whether the post has a floating creation date. Default to false.
Default value: array()
-
‘label’
响应
(object)
源文件
文件: gc-includes/post.php
function register_post_status( $post_status, $args = array() ) {
global $gc_post_statuses;
if ( ! is_array( $gc_post_statuses ) ) {
$gc_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 = gc_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 GeChiUI.GC.I18n.NonSingularStringLiteralSingle,GeChiUI.GC.I18n.NonSingularStringLiteralPlural
$args->label_count = _n_noop( $args->label, $args->label );
}
$gc_post_statuses[ $post_status ] = $args;
return $args;
}
/** * Add 'Unread' post status. */ function gcdocs_custom_post_status(){ register_post_status( 'unread', array( 'label' => _x( 'Unread', 'post' ), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Unread <span class="count">(%s)</span>', 'Unread <span class="count">(%s)</span>' ), ) ); } add_action( 'init', 'gcdocs_custom_post_status' );