Make WordPress Core

Ticket #45017: 45017.2.diff

File 45017.2.diff, 4.5 KB (added by rahulsprajapati, 6 years ago)

Resolved feedback from comment #5.

  • tests/phpunit/tests/rest-api/rest-posts-controller.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    39923992                $this->assertArrayHasKey( 'https://api.w.org/action-assign-tags', $links );
    39933993        }
    39943994
     3995        public function test_permalink_template_and_autogenerated_slug_for_edit_posts() {
     3996
     3997                wp_set_current_user( self::$editor_id );
     3998
     3999                $permalink_structure         = '%postname%';
     4000                $expected_permalink_template = trailingslashit( home_url( $permalink_structure ) );
     4001                $this->set_permalink_structure( "/$permalink_structure/" );
     4002
     4003                $post_id = $this->factory->post->create(
     4004                        array(
     4005                                'post_title' => 'Permalink Template'
     4006                        )
     4007                );
     4008
     4009                $request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
     4010                $request->set_param( 'context', 'edit' );
     4011                $response = rest_get_server()->dispatch( $request );
     4012                $this->check_get_post_response( $response, 'edit' );
     4013                $read_data = $response->get_data();
     4014
     4015                $this->assertArrayHasKey( 'permalink_template', $read_data );
     4016                $this->assertArrayHasKey( 'generated_slug', $read_data );
     4017                $this->assertEquals( $expected_permalink_template, $read_data['permalink_template'] );
     4018                $this->assertEquals( 'permalink-template', $read_data['generated_slug'] );
     4019
     4020                $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/posts/%d', $post_id ) );
     4021                $params  = array(
     4022                        'title' => 'Permalink Template Slug',
     4023                );
     4024                $request->set_body_params( $params );
     4025                $response     = rest_get_server()->dispatch( $request );
     4026                $updated_data = $response->get_data();
     4027
     4028                $this->assertArrayHasKey( 'permalink_template', $updated_data );
     4029                $this->assertArrayHasKey( 'generated_slug', $updated_data );
     4030                $this->assertArrayHasKey( 'slug', $updated_data );
     4031                $this->assertEquals( $expected_permalink_template, $updated_data['permalink_template'] );
     4032                $this->assertEquals( 'permalink-template-slug', $updated_data['generated_slug'] );
     4033                $this->assertEquals( 'permalink-template', $updated_data['slug'] );
     4034
     4035                $request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
     4036                $response = rest_get_server()->dispatch( $request );
     4037                $this->check_get_post_response( $response, 'view' );
     4038                $read_data = $response->get_data();
     4039
     4040                $this->assertArrayNotHasKey( 'permalink_template', $read_data );
     4041                $this->assertArrayNotHasKey( 'generated_slug', $read_data );
     4042        }
     4043
    39954044        public function tearDown() {
    39964045                _unregister_post_type( 'youseeeme' );
    39974046                if ( isset( $this->attachment_id ) ) {
  • src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    15871587                        }
    15881588                }
    15891589
     1590                if ( ! function_exists( 'get_sample_permalink' ) ) {
     1591                        require_once ABSPATH . '/wp-admin/includes/post.php';
     1592                }
     1593
     1594                $sample_permalink = get_sample_permalink( $post->ID, $post->post_title, '' );
     1595
     1596                $data['permalink_template'] = $sample_permalink[0];
     1597                $data['generated_slug']     = $sample_permalink[1];
     1598
    15901599                $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
    15911600                $data    = $this->add_additional_fields_to_object( $data, $request );
    15921601                $data    = $this->filter_response_by_context( $data, $context );
     
    19151924
    19161925                $post_type_obj = get_post_type_object( $this->post_type );
    19171926
     1927                if ( is_post_type_viewable( $post_type_obj ) && $post_type_obj->public  ) {
     1928
     1929                        $schema['properties']['permalink_template'] = array(
     1930                                'description' => __( 'Permalink template for the object.' ),
     1931                                'type'        => 'string',
     1932                                'context'     => array( 'edit' ),
     1933                                'readonly'    => true,
     1934                        );
     1935
     1936                        $schema['properties']['generated_slug'] = array(
     1937                                'description' => __( 'Autogenerated slug from post title.' ),
     1938                                'type'        => 'string',
     1939                                'context'     => array( 'edit' ),
     1940                                'readonly'    => true,
     1941                        );
     1942                }
     1943
    19181944                if ( $post_type_obj->hierarchical ) {
    19191945                        $schema['properties']['parent'] = array(
    19201946                                'description' => __( 'The ID for the parent of the object.' ),