Make WordPress Core

Ticket #44180: 44180.1.diff

File 44180.1.diff, 4.8 KB (added by danielbachhuber, 7 years ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

    diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
    index b7b2dd79f6..41c95e946c 100644
    a b class WP_REST_Posts_Controller extends WP_REST_Controller { 
    14791479                        $data['link'] = get_permalink( $post->ID );
    14801480                }
    14811481
     1482                if ( in_array( 'preview_link', $fields, true ) ) {
     1483                        $data['preview_link'] = get_preview_post_link( $post );
     1484                }
     1485
    14821486                if ( in_array( 'title', $fields, true ) ) {
    14831487                        add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
    14841488
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    18411845                        );
    18421846                }
    18431847
     1848                if ( is_post_type_viewable( $this->post_type ) ) {
     1849                        $schema['properties']['preview_link'] = array(
     1850                                'description' => __( 'Preview URL for the object.' ),
     1851                                'type'        => 'string',
     1852                                'format'      => 'uri',
     1853                                'context'     => array( 'edit' ),
     1854                                'readonly'    => true,
     1855                        );
     1856                }
     1857
    18441858                $post_type_attributes = array(
    18451859                        'title',
    18461860                        'editor',
  • tests/phpunit/includes/testcase-rest-post-type-controller.php

    diff --git a/tests/phpunit/includes/testcase-rest-post-type-controller.php b/tests/phpunit/includes/testcase-rest-post-type-controller.php
    index 1336074840..900b8e6772 100644
    a b abstract class WP_Test_REST_Post_Type_Controller_Testcase extends WP_Test_REST_C 
    4949                        $this->assertFalse( isset( $data['parent'] ) );
    5050                }
    5151
     52                // preview_link
     53                if ( is_post_type_viewable( $post_type_obj->name ) && 'edit' === $context ) {
     54                        $this->assertEquals( get_preview_post_link( $post ), $data['preview_link'] );
     55                } else {
     56                        $this->assertFalse( isset( $data['preview_link'] ) );
     57                }
     58
    5259                // page attributes
    5360                if ( $post_type_obj->hierarchical && post_type_supports( $post->post_type, 'page-attributes' ) ) {
    5461                        $this->assertEquals( $post->menu_order, $data['menu_order'] );
  • tests/phpunit/tests/rest-api/rest-pages-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-pages-controller.php b/tests/phpunit/tests/rest-api/rest-pages-controller.php
    index dcc7c15297..67fb1bb5cb 100644
    a b class WP_Test_REST_Pages_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    673673                $response   = rest_get_server()->dispatch( $request );
    674674                $data       = $response->get_data();
    675675                $properties = $data['schema']['properties'];
    676                 $this->assertEquals( 22, count( $properties ) );
     676                $this->assertEquals( 23, count( $properties ) );
    677677                $this->assertArrayHasKey( 'author', $properties );
    678678                $this->assertArrayHasKey( 'comment_status', $properties );
    679679                $this->assertArrayHasKey( 'content', $properties );
    class WP_Test_REST_Pages_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    691691                $this->assertArrayHasKey( 'parent', $properties );
    692692                $this->assertArrayHasKey( 'password', $properties );
    693693                $this->assertArrayHasKey( 'ping_status', $properties );
     694                $this->assertArrayHasKey( 'preview_link', $properties );
    694695                $this->assertArrayHasKey( 'slug', $properties );
    695696                $this->assertArrayHasKey( 'status', $properties );
    696697                $this->assertArrayHasKey( 'template', $properties );
  • tests/phpunit/tests/rest-api/rest-posts-controller.php

    diff --git a/tests/phpunit/tests/rest-api/rest-posts-controller.php b/tests/phpunit/tests/rest-api/rest-posts-controller.php
    index 721b08292a..0dbf15d622 100644
    a b class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    33803380                $response   = rest_get_server()->dispatch( $request );
    33813381                $data       = $response->get_data();
    33823382                $properties = $data['schema']['properties'];
    3383                 $this->assertEquals( 24, count( $properties ) );
     3383                $this->assertEquals( 25, count( $properties ) );
    33843384                $this->assertArrayHasKey( 'author', $properties );
    33853385                $this->assertArrayHasKey( 'comment_status', $properties );
    33863386                $this->assertArrayHasKey( 'content', $properties );
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    33973397                $this->assertArrayHasKey( 'modified_gmt', $properties );
    33983398                $this->assertArrayHasKey( 'password', $properties );
    33993399                $this->assertArrayHasKey( 'ping_status', $properties );
     3400                $this->assertArrayHasKey( 'preview_link', $properties );
    34003401                $this->assertArrayHasKey( 'slug', $properties );
    34013402                $this->assertArrayHasKey( 'status', $properties );
    34023403                $this->assertArrayHasKey( 'sticky', $properties );
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    34733474                        'modified_gmt',
    34743475                        'password',
    34753476                        'ping_status',
     3477                        'preview_link',
    34763478                        'slug',
    34773479                        'status',
    34783480                        'sticky',