WC_API_Server::add_pagination_headers()publicWC 2.1

Send pagination headers for resources

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

Хуки из метода

Возвращает

null. Ничего (null).

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

$WC_API_Server = new WC_API_Server();
$WC_API_Server->add_pagination_headers( $query );
$query(WP_Query|WP_User_Query|stdClass) (обязательный)
-

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

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

Код WC_API_Server::add_pagination_headers() WC 8.7.0

public function add_pagination_headers( $query ) {

	// WP_User_Query
	if ( is_a( $query, 'WP_User_Query' ) ) {

		$single      = count( $query->get_results() ) == 1;
		$total       = $query->get_total();

		if ( $query->get( 'number' ) > 0 ) {
			$page = ( $query->get( 'offset' ) / $query->get( 'number' ) ) + 1;
			$total_pages = ceil( $total / $query->get( 'number' ) );
		} else {
			$page = 1;
			$total_pages = 1;
		}
	} elseif ( is_a( $query, 'stdClass' ) ) {
		$page        = $query->page;
		$single      = $query->is_single;
		$total       = $query->total;
		$total_pages = $query->total_pages;

	// WP_Query
	} else {

		$page        = $query->get( 'paged' );
		$single      = $query->is_single();
		$total       = $query->found_posts;
		$total_pages = $query->max_num_pages;
	}

	if ( ! $page ) {
		$page = 1;
	}

	$next_page = absint( $page ) + 1;

	if ( ! $single ) {

		// first/prev
		if ( $page > 1 ) {
			$this->link_header( 'first', $this->get_paginated_url( 1 ) );
			$this->link_header( 'prev', $this->get_paginated_url( $page -1 ) );
		}

		// next
		if ( $next_page <= $total_pages ) {
			$this->link_header( 'next', $this->get_paginated_url( $next_page ) );
		}

		// last
		if ( $page != $total_pages ) {
			$this->link_header( 'last', $this->get_paginated_url( $total_pages ) );
		}
	}

	$this->header( 'X-WC-Total', $total );
	$this->header( 'X-WC-TotalPages', $total_pages );

	do_action( 'woocommerce_api_pagination_headers', $this, $query );
}