get_post_status() WP 2.0.0

Отримує статус зазначеного запису/поста: publish , draft і т.д.

Якщо функції було передано ID вкладення (прикріпленого запису), то функція поверне статус батьківського запису. Якщо вкладення не прикріплено до жодного посту, воно буде вважатися опублікованим – функція поверне publish.

Список базових статусів у WordPress:

publish
future
draft
pending
private
trash
auto-draft
inherit

Повертає

Строку|false. Статус запису при успіху, false, якщо не вдалося отримати статус.

Працює на основі:
get_post()
1 раз – 0.000357 сек
(швидко) | 50000 разів – 0.29 сек
(дуже швидко) |
PHP 7.0.5, WP 4.4.2

Хуки з функції

Використання

get_post_status($post);
$post
(число/WP_Post)
Ідентифікатор (ID) запису або об’єкт запису
WP_Post .


Типово: null (поточний запис у циклі)

Приклади

1

#1 Виведемо на екран статус посту з ідентифікатором 121

$ status = get_post_status (121);
echo $status;
// виведе:
// publish, якщо пост опубліковано.
// draft, якщо це чернетка і т.д.
0

#2 Виведемо локалізовану назву статусу посту

$ status = get_post_status (121);
echo get_post_status_object( $status )->label; //Опубліковано

список змін

З версії 2.0.0Введено.

Код get_post_status() WP 6.0.2

function get_post_status( $post = null ) {
	$post = get_post($post);

	if ( ! is_object( $post ) ) {
		return false;
	}

	$post_status = $post->post_status;

	if (
		'attachment' === $post->post_type &&
		'inherit' === $post_status
	) {
		if (
			0 === $post->post_parent ||
			! get_post($post->post_parent) ||
			$post->ID === $post->post_parent
		) {
			// Безперервні контакти з внесеним статусом є прийняті до публікування.
			$post_status = 'publish';
		} elseif ( 'trash' === get_post_status( $post->post_parent ) ) {
			// Get parent status prior to trashing.
			$post_status = get_post_meta( $post->post_parent, '_wp_trash_meta_status', true );
			if (! $post_status) {
				// Assume publish as above.
				$post_status = 'publish';
			}
		} else {
			$post_status = get_post_status($post->post_parent);
		}
	} elseif (
		'attachment' === $post->post_type &&
		! in_array( $post_status, array( 'private', 'trash', 'auto-draft' ), true )
	) {
		/*
		 * Завдання uninherited attachments має apermitted status either 'private', 'trash', 'auto-draft'.
		 * Це є логіка в wp_insert_post().
		 *
		 * Note: 'inherit' is excluded from this check as it is resolved to the parent post's
		 * status in the logic block above.
		 */
		$post_status = 'publish';
	}

	/**
	 * Filters the post status.
	 *
	 * @ Since 4.4.0
	 * @since 5.7.0 Вихідна адреса типу є тепер passed this filter.
	 *
	 * @param string $post_status The post status.
	 * @param WP_Post $post The post object.
	 */
	return apply_filters( 'get_post_status', $post_status, $post);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *