Make WordPress Core

Ticket #38698: 38698.3.diff

File 38698.3.diff, 3.6 KB (added by swissspidy, 8 years ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

    diff --git src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
    index 716f329..11ae1ec 100644
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    10941094        }
    10951095
    10961096        /**
    1097          * Sets the template for a page.
     1097         * Sets the template for a post.
    10981098         *
    10991099         * @since 4.7.0
    11001100         * @access public
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    19221922                        );
    19231923                }
    19241924
    1925                 if ( 'page' === $this->post_type ) {
    1926                         $schema['properties']['template'] = array(
    1927                                 'description' => __( 'The theme file to use to display the object.' ),
    1928                                 'type'        => 'string',
    1929                                 'enum'        => array_keys( wp_get_theme()->get_page_templates() ),
    1930                                 'context'     => array( 'view', 'edit' ),
    1931                         );
    1932                 }
     1925                $schema['properties']['template'] = array(
     1926                        'description' => __( 'The theme file to use to display the object.' ),
     1927                        'type'        => 'string',
     1928                        'enum'        => array_keys( wp_get_theme()->get_page_templates( null, $this->post_type ) ),
     1929                        'context'     => array( 'view', 'edit' ),
     1930                );
    19331931
    19341932                $taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) );
    19351933                foreach ( $taxonomies as $taxonomy ) {
  • tests/phpunit/tests/rest-api/rest-posts-controller.php

    diff --git tests/phpunit/tests/rest-api/rest-posts-controller.php tests/phpunit/tests/rest-api/rest-posts-controller.php
    index 57d5deb..e632455 100644
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    10251025                $this->check_create_post_response( $response );
    10261026        }
    10271027
     1028        /**
     1029         * @ticket 38698
     1030         */
     1031        public function test_create_item_with_template() {
     1032                wp_set_current_user( self::$editor_id );
     1033                add_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
     1034
     1035                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
     1036                $params = $this->set_post_data( array(
     1037                        'template' => 'post-my-test-template.php',
     1038                ) );
     1039                $request->set_body_params( $params );
     1040                $response = $this->server->dispatch( $request );
     1041
     1042                $data = $response->get_data();
     1043                $post_template = get_page_template_slug( get_post( $data['id'] ) );
     1044
     1045                remove_filter( 'theme_post_templates', array( $this, 'filter_theme_post_templates' ) );
     1046
     1047                $this->assertEquals( 'post-my-test-template.php', $data['template'] );
     1048                $this->assertEquals( 'post-my-test-template.php', $post_template );
     1049        }
     1050
     1051        /**
     1052         * @ticket 38698
     1053         */
     1054        public function test_create_item_with_template_none_available() {
     1055                wp_set_current_user( self::$editor_id );
     1056
     1057                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
     1058                $params = $this->set_post_data( array(
     1059                        'template' => 'post-my-test-template.php',
     1060                ) );
     1061                $request->set_body_params( $params );
     1062                $response = $this->server->dispatch( $request );
     1063
     1064                $data = $response->get_data();
     1065                $post_template = get_page_template_slug( get_post( $data['id'] ) );
     1066
     1067                $this->assertEquals( '', $data['template'] );
     1068                $this->assertEquals( '      ', $post_template );
     1069        }
     1070
    10281071        public function test_rest_create_item() {
    10291072                wp_set_current_user( self::$editor_id );
    10301073
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    24692512                return $query;
    24702513        }
    24712514
     2515        public function filter_theme_post_templates( $post_templates ) {
     2516                return array(
     2517                        'post-my-test-template.php' => 'My Test Template',
     2518                );
     2519
     2520                return $post_templates;
     2521        }
    24722522}