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
Version | Description |
---|---|
4.7.0 | Introduced. |