# register_post_status()

URL: https://chugunov.pro/api-wordpress/functions/register_post_status/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 3.0.0.

## Сигнатура

```php
register_post_status( string $post_status, array|string $args = array() ): object
```

## Описание

Простая функция для создания или изменения статуса записи на основе переданных параметров. Функция принимает массив (второй необязательный параметр) вместе со строкой — именем статуса записи.
Аргументы с префиксом-подчёркиванием не должны использоваться плагинами и темами.

## Параметры

- `$post_status` `string` — обязательный. Имя статуса записи.
- `$args` `array|string` — необязательный, по умолчанию `array()`. Массив или строка аргументов статуса записи.
  
  label bool|stringОписательное имя статуса записи, помеченное для перевода. По умолчанию — значение $post_status.
  
  label_count array|falseТекст множественного числа, подготовленный через _n_noop(), для указания форм единственного и множественного числа метки в счётчиках. По умолчанию false, что означает использование аргумента $label как для единственной, так и для множественной формы этой метки.
  
  exclude_from_search boolИсключать ли записи с этим статусом из результатов поиска. По умолчанию — значение $internal.
  
  _builtin boolЯвляется ли статус встроенным. Только для использования ядром.
  
  По умолчанию false.
  
  public boolДолжны ли записи с этим статусом отображаться в публичной части сайта. По умолчанию false.
  
  internal boolПредназначен ли статус только для внутреннего использования.
  
  По умолчанию false.
  
  protected boolДолжны ли записи с этим статусом быть защищёнными.
  
  По умолчанию false.
  
  private boolДолжны ли записи с этим статусом быть приватными.
  
  По умолчанию false.
  
  publicly_queryable boolДоступны ли записи с этим статусом для публичных запросов. По умолчанию — значение $public.
  
  show_in_admin_all_list boolВключать ли записи в список редактирования для их типа записи. По умолчанию — противоположное значение $internal.
  
  show_in_admin_status_list boolПоказывать в списке статусов со счётчиками записей в верхней части списков редактирования, например «Все (12) | Опубликовано (9) | Мой произвольный статус (2)». По умолчанию — противоположное значение $internal.
  
  date_floating boolИмеет ли запись плавающую дату создания.
  
  По умолчанию false.

## Возвращаемое значение

`object`

## Исходный код

Файл: `wp-includes/post.php:1419`

```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.NonSingularStringLiteralSingular,WordPress.WP.I18n.NonSingularStringLiteralPlural
		$args->label_count = _n_noop( $args->label, $args->label );
	}

	$wp_post_statuses[ $post_status ] = $args;

	return $args;
}
```

## История изменений

- 3.0.0 — Introduced.

## Связанные

Использует: [`_n_noop`](https://chugunov.pro/api-wordpress/functions/_n_noop/), [`sanitize_key`](https://chugunov.pro/api-wordpress/functions/sanitize_key/), [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/).
Используется в: [`create_initial_post_types`](https://chugunov.pro/api-wordpress/functions/create_initial_post_types/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/register_post_status/
