diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
index 117529d..a4b1573 100644
a
|
b
|
class WP_REST_Comments_Controller extends WP_REST_Controller { |
235 | 235 | } |
236 | 236 | |
237 | 237 | if ( isset( $registered['page'] ) && empty( $request['offset'] ) ) { |
238 | | $prepared_args['offset'] = $prepared_args['number'] * ( absint( $request['page'] ) - 1 ); |
| 238 | $prepared_args['offset'] = $prepared_args['number'] * ( $request['page'] - 1 ); |
239 | 239 | } |
240 | 240 | |
241 | 241 | /** |
… |
… |
class WP_REST_Comments_Controller extends WP_REST_Controller { |
278 | 278 | $max_pages = ceil( $total_comments / $request['per_page'] ); |
279 | 279 | } |
280 | 280 | |
| 281 | if ( $request['page'] > $max_pages && $total_comments > 0 ) { |
| 282 | return new WP_Error( 'rest_comment_invalid_page_number', __( 'The page number requested is larger than the number of pages available.' ), array( 'status' => 400 ) ); |
| 283 | } |
| 284 | |
281 | 285 | $response = rest_ensure_response( $comments ); |
282 | 286 | $response->header( 'X-WP-Total', $total_comments ); |
283 | 287 | $response->header( 'X-WP-TotalPages', $max_pages ); |
diff --git a/tests/phpunit/tests/rest-api/rest-comments-controller.php b/tests/phpunit/tests/rest-api/rest-comments-controller.php
index 502a6d2..b7b3701 100644
a
|
b
|
class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase |
469 | 469 | // 'offset' takes priority over 'page' |
470 | 470 | $request->set_param( 'page', 3 ); |
471 | 471 | $response = $this->server->dispatch( $request ); |
472 | | $this->assertCount( 2, $response->get_data() ); |
| 472 | $headers = $response->get_headers(); |
| 473 | $this->assertErrorResponse( 'rest_comment_invalid_page_number', $response, 400 ); |
| 474 | |
473 | 475 | // 'offset' with invalid value errors. |
474 | 476 | $request->set_param( 'offset', 'moreplease' ); |
475 | 477 | $response = $this->server->dispatch( $request ); |
… |
… |
class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase |
731 | 733 | $request->set_param( 'page', 8 ); |
732 | 734 | $response = $this->server->dispatch( $request ); |
733 | 735 | $headers = $response->get_headers(); |
734 | | $this->assertEquals( 51, $headers['X-WP-Total'] ); |
735 | | $this->assertEquals( 6, $headers['X-WP-TotalPages'] ); |
736 | | $prev_link = add_query_arg( array( |
737 | | 'page' => 6, |
738 | | ), rest_url( '/wp/v2/comments' ) ); |
739 | | $this->assertContains( '<' . $prev_link . '>; rel="prev"', $headers['Link'] ); |
740 | | $this->assertFalse( stripos( $headers['Link'], 'rel="next"' ) ); |
| 736 | $this->assertErrorResponse( 'rest_comment_invalid_page_number', $response, 400 ); |
741 | 737 | } |
742 | 738 | |
743 | 739 | public function test_get_comments_invalid_date() { |