ACF_Internal_Post_Type::get_post_objectpublicACF 6.1

Retrieves the WP_Post object for an ACF internal CPT.

Метод класса: ACF_Internal_Post_Type{}

Хуков нет.

Возвращает

WP_Post|true|false. The post object, or false on failure.

Использование

$ACF_Internal_Post_Type = new ACF_Internal_Post_Type();
$ACF_Internal_Post_Type->get_post_object( $id );
$id(int|строка)
The post ID, key, or name.

Список изменений

С версии 6.1 Введена.

Код ACF_Internal_Post_Type::get_post_object() ACF 6.4.2

public function get_post_object( $id = 0 ) {
	if ( is_numeric( $id ) ) {
		$post_object = get_post( $id );

		if ( $post_object && $post_object->post_type === $this->post_type ) {
			return $post_object;
		}

		return false;
	}

	if ( is_string( $id ) ) {
		// Try cache.
		$cache_key = $this->cache_key . $id;
		$post_id   = wp_cache_get( $cache_key, 'acf' );

		if ( $post_id === false ) {
			$query_key = 'acf_' . $this->post_key_prefix . 'key';

			// Query posts.
			$posts = get_posts(
				array(
					'posts_per_page'         => 1,
					'post_type'              => $this->post_type,
					'post_status'            => array( 'publish', 'acf-disabled', 'trash' ),
					'orderby'                => 'menu_order title',
					'order'                  => 'ASC',
					'suppress_filters'       => false,
					'cache_results'          => true,
					'update_post_meta_cache' => false,
					'update_post_term_cache' => false,
					$query_key               => $id, // Used to check post_name for field group/post type/taxonomy key.
				)
			);

			// Update $post_id with a non-false value.
			$post_id = $posts ? $posts[0]->ID : 0;

			// Update cache.
			wp_cache_set( $cache_key, $post_id, 'acf' );
		}

		// Check $post_id and return the post when possible.
		if ( $post_id ) {
			return get_post( $post_id );
		}
	}

	return false;
}