# get_post_states()

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

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

## Сигнатура

```php
get_post_states( WP_Post $post ): string[]
```

## Описание

Получает массив состояний записи для записи.

## Параметры

- `$post` `WP_Post` — обязательный. Запись, для которой нужно получить состояния.

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

`string[]`

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

Файл: `wp-admin/includes/template.php:2303`

```php
function get_post_states( $post ) {
	$post_states = array();
	if ( ! $post instanceof WP_Post ) {
		return $post_states;
	}

	$post_status = $_REQUEST['post_status'] ?? '';

	if ( ! empty( $post->post_password ) ) {
		$post_states['protected'] = _x( 'Password protected', 'post status' );
	}

	if ( 'private' === $post->post_status && 'private' !== $post_status ) {
		$post_states['private'] = _x( 'Private', 'post status' );
	}

	if ( 'draft' === $post->post_status ) {
		if ( get_post_meta( $post->ID, '_customize_changeset_uuid', true ) ) {
			$post_states[] = __( 'Customization Draft' );
		} elseif ( 'draft' !== $post_status ) {
			$post_states['draft'] = _x( 'Draft', 'post status' );
		}
	} elseif ( 'trash' === $post->post_status && get_post_meta( $post->ID, '_customize_changeset_uuid', true ) ) {
		$post_states[] = _x( 'Customization Draft', 'post status' );
	}

	if ( 'pending' === $post->post_status && 'pending' !== $post_status ) {
		$post_states['pending'] = _x( 'Pending', 'post status' );
	}

	if ( is_sticky( $post->ID ) ) {
		$post_states['sticky'] = _x( 'Sticky', 'post status' );
	}

	if ( 'future' === $post->post_status ) {
		$post_states['scheduled'] = _x( 'Scheduled', 'post status' );
	}

	if ( 'page' === get_option( 'show_on_front' ) ) {
		if ( (int) get_option( 'page_on_front' ) === $post->ID ) {
			$post_states['page_on_front'] = _x( 'Front Page', 'page label' );
		}

		if ( (int) get_option( 'page_for_posts' ) === $post->ID ) {
			$post_states['page_for_posts'] = _x( 'Posts Page', 'page label' );
		}
	}

	if ( (int) get_option( 'wp_page_for_privacy_policy' ) === $post->ID ) {
		$post_states['page_for_privacy_policy'] = _x( 'Privacy Policy Page', 'page label' );
	}

	/**
	 * Filters the default post display states used in the posts list table.
	 *
	 * @since 2.8.0
	 * @since 3.6.0 Added the `$post` parameter.
	 * @since 5.5.0 Also applied in the Customizer context. If any admin functions
	 *              are used within the filter, their existence should be checked
	 *              with `function_exists()` before being used.
	 *
	 * @param array<string, string>  $post_states A mapping of post state slugs to translated post state labels.
	 *                                            E.g. `array( 'draft' => __( 'Draft' ), 'sticky' => __( 'Sticky' ), ... )`.
	 * @param WP_Post                $post        The current post object.
	 */
	return apply_filters( 'display_post_states', $post_states, $post );
}
```

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

- 5.3.0 — Introduced.

## Связанные

Использует: [`is_sticky`](https://chugunov.pro/api-wordpress/functions/is_sticky/), [`_x`](https://chugunov.pro/api-wordpress/functions/_x/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/), [`get_post_meta`](https://chugunov.pro/api-wordpress/functions/get_post_meta/).
Используется в: `WP_Customize_Nav_Menus::search_available_items_query`, `WP_Customize_Nav_Menus::load_available_items_query`, [`_post_states`](https://chugunov.pro/api-wordpress/functions/_post_states/), [`wp_setup_nav_menu_item`](https://chugunov.pro/api-wordpress/functions/wp_setup_nav_menu_item/).

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