Reviews_Listing_Controller::get_rendered_item( WP_REST_Request $request )

Summary

Retrieves the rendered review list


Parameters

$request

(WP_REST_Request) (Required) Full details about the request.


Return

(WP_REST_Response|WP_Error) Response object on success, or WP_Error object on failure.


Source

File: src/BigCommerce/Rest/Reviews_Listing_Controller.php

	 */
	public function get_rendered_item( $request ) {
		$attributes = $request->get_params();
		$product    = new Product( $attributes['post_id'] );

		$page     = absint( $attributes['paged'] ) ?: 1;
		$per_page = absint( $attributes['per_page'] ) ?: 12;
		$wrap     = filter_var( $attributes['wrap'], FILTER_VALIDATE_BOOLEAN );

		if ( $page === 1 && $per_page <= 12 ) {
			$reviews = $product->get_reviews( $per_page );
		} else {
			$reviews = $this->fetcher->fetch( $product->bc_id(), $page, $per_page )['reviews'];
		}
		$reviews = array_map( function ( $review ) use ( $product ) {
			$controller = Review_Single::factory( array_merge( [
				Review_Single::PRODUCT => $product,
			], $review ) );

			return $controller->render();
		}, $reviews );

		$total_reviews = $product->get_review_count();
		$total_pages   = empty( $total_reviews ) ? 0 : ceil( $total_reviews / $per_page );

		$controller = Review_List::factory( [
			Review_List::PRODUCT       => $product,
			Review_List::REVIEWS       => $reviews,
			Review_List::WRAP          => $wrap,
			Review_List::NEXT_PAGE_URL => $this->next_page_url( $attributes['post_id'], $per_page, $page, $total_pages ),
		] );

		$output = $controller->render();

		$response = rest_ensure_response( [
			'rendered' => $output,
		] );

		return $response;
	}

	private function next_page_url( $post_id, $per_page, $current_page, $max_pages ) {
		if ( $current_page >= $max_pages ) {

Changelog

Changelog
Version Description
4.7.0 Introduced.


User Contributed Notes

You must log in before being able to contribute a note or feedback.