Make WordPress Core

Ticket #49179: 49179.patch

File 49179.patch, 8.7 KB (added by imath, 4 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 ffac007c82..2d582948db 100644
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    11251125                        $prepared_post->page_template = null;
    11261126                }
    11271127
     1128                foreach ( array( 'to_ping', 'pinged' ) as $trackback_attribute ) {
     1129                        if ( ! empty( $schema['properties'][ $trackback_attribute ] ) && isset( $request[ $trackback_attribute ] ) ) {
     1130                                if ( $request[ $trackback_attribute ] ) {
     1131                                        $trackback_urls                          = (array) $request[ $trackback_attribute ];
     1132                                        $prepared_post->{ $trackback_attribute } = implode( ' ', $trackback_urls );
     1133                                } else {
     1134                                        $prepared_post->{ $trackback_attribute } = '';
     1135                                }
     1136                        }
     1137                }
     1138
    11281139                /**
    11291140                 * Filters a post before it is inserted via the REST API.
    11301141                 *
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    16251636                        }
    16261637                }
    16271638
     1639                foreach ( array( 'to_ping', 'pinged' ) as $trackback_attribute ) {
     1640                        if ( rest_is_field_included( $trackback_attribute, $fields ) ) {
     1641                                $trackback_urls = trim( $post->{$trackback_attribute}, "\n" );
     1642
     1643                                if ( $trackback_urls ) {
     1644                                        $data[ $trackback_attribute ] = explode( "\n", $trackback_urls );
     1645                                } else {
     1646                                        $data[ $trackback_attribute ] = array();
     1647                                }
     1648                        }
     1649                }
     1650
    16281651                if ( rest_is_field_included( 'meta', $fields ) ) {
    16291652                        $data['meta'] = $this->meta->get_value( $post->ID, $request );
    16301653                }
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    20302053                        'revisions',
    20312054                        'page-attributes',
    20322055                        'post-formats',
     2056                        'trackbacks',
    20332057                        'custom-fields',
    20342058                );
    20352059                $fixed_schemas        = array(
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    20422066                                'comments',
    20432067                                'revisions',
    20442068                                'post-formats',
     2069                                'trackbacks',
    20452070                                'custom-fields',
    20462071                        ),
    20472072                        'page'       => array(
    class WP_REST_Posts_Controller extends WP_REST_Controller { 
    22162241                                        );
    22172242                                        break;
    22182243
     2244                                case 'trackbacks':
     2245                                        $trackback_props_attrs = array(
     2246                                                'type'        => 'array',
     2247                                                'items'       => array(
     2248                                                        'type'   => 'string',
     2249                                                        'format' => 'uri',
     2250                                                ),
     2251                                                'default'     => array(),
     2252                                                'context'     => array( 'edit' ),
     2253                                                'arg_options' => array(
     2254                                                        'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database()
     2255                                                        'validate_callback' => null, // Note: validation implemented in self::prepare_item_for_database()
     2256                                                ),
     2257                                        );
     2258
     2259                                        $schema['properties']['to_ping'] = array_merge(
     2260                                                array(
     2261                                                        'description' => __( 'List of the trackbacks to send.' ),
     2262                                                ),
     2263                                                $trackback_props_attrs
     2264                                        );
     2265
     2266                                        $schema['properties']['pinged'] = array_merge(
     2267                                                array(
     2268                                                        'description' => __( 'List of the trackbacks sent.' ),
     2269                                                ),
     2270                                                $trackback_props_attrs
     2271                                        );
     2272                                        break;
     2273
    22192274                                case 'custom-fields':
    22202275                                        $schema['properties']['meta'] = $this->meta->get_field_schema();
    22212276                                        break;
  • 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 da6c0ada98..af99baa7c7 100644
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    38893889                $response   = rest_get_server()->dispatch( $request );
    38903890                $data       = $response->get_data();
    38913891                $properties = $data['schema']['properties'];
    3892                 $this->assertEquals( 26, count( $properties ) );
     3892                $this->assertEquals( 28, count( $properties ) );
    38933893                $this->assertArrayHasKey( 'author', $properties );
    38943894                $this->assertArrayHasKey( 'comment_status', $properties );
    38953895                $this->assertArrayHasKey( 'content', $properties );
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    39083908                $this->assertArrayHasKey( 'password', $properties );
    39093909                $this->assertArrayHasKey( 'permalink_template', $properties );
    39103910                $this->assertArrayHasKey( 'ping_status', $properties );
     3911                $this->assertArrayHasKey( 'pinged', $properties );
    39113912                $this->assertArrayHasKey( 'slug', $properties );
    39123913                $this->assertArrayHasKey( 'status', $properties );
    39133914                $this->assertArrayHasKey( 'sticky', $properties );
    39143915                $this->assertArrayHasKey( 'template', $properties );
    39153916                $this->assertArrayHasKey( 'title', $properties );
     3917                $this->assertArrayHasKey( 'to_ping', $properties );
    39163918                $this->assertArrayHasKey( 'type', $properties );
    39173919                $this->assertArrayHasKey( 'tags', $properties );
    39183920                $this->assertArrayHasKey( 'categories', $properties );
    class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te 
    40004002                        'password',
    40014003                        'permalink_template',
    40024004                        'ping_status',
     4005                        'pinged',
    40034006                        'slug',
    40044007                        'status',
    40054008                        'sticky',
    40064009                        'tags',
    40074010                        'template',
    40084011                        'title',
     4012                        'to_ping',
    40094013                        'type',
    40104014                );
    40114015
  • tests/qunit/fixtures/wp-api-generated.js

    diff --git tests/qunit/fixtures/wp-api-generated.js tests/qunit/fixtures/wp-api-generated.js
    index 9c130539b7..3833904b2a 100644
    mockedApiResponse.Schema = { 
    477477                            "description": "The format for the object.",
    478478                            "type": "string"
    479479                        },
     480                        "to_ping": {
     481                            "required": false,
     482                            "default": [],
     483                            "description": "List of the trackbacks to send.",
     484                            "type": "array",
     485                            "items": {
     486                                "type": "string",
     487                                "format": "uri"
     488                            }
     489                        },
     490                        "pinged": {
     491                            "required": false,
     492                            "default": [],
     493                            "description": "List of the trackbacks sent.",
     494                            "type": "array",
     495                            "items": {
     496                                "type": "string",
     497                                "format": "uri"
     498                            }
     499                        },
    480500                        "meta": {
    481501                            "required": false,
    482502                            "description": "Meta fields.",
    mockedApiResponse.Schema = { 
    663683                            "description": "The format for the object.",
    664684                            "type": "string"
    665685                        },
     686                        "to_ping": {
     687                            "required": false,
     688                            "description": "List of the trackbacks to send.",
     689                            "type": "array",
     690                            "items": {
     691                                "type": "string",
     692                                "format": "uri"
     693                            }
     694                        },
     695                        "pinged": {
     696                            "required": false,
     697                            "description": "List of the trackbacks sent.",
     698                            "type": "array",
     699                            "items": {
     700                                "type": "string",
     701                                "format": "uri"
     702                            }
     703                        },
    666704                        "meta": {
    667705                            "required": false,
    668706                            "description": "Meta fields.",
    mockedApiResponse.Schema = { 
    10091047                            "description": "The format for the object.",
    10101048                            "type": "string"
    10111049                        },
     1050                        "to_ping": {
     1051                            "required": false,
     1052                            "description": "List of the trackbacks to send.",
     1053                            "type": "array",
     1054                            "items": {
     1055                                "type": "string",
     1056                                "format": "uri"
     1057                            }
     1058                        },
     1059                        "pinged": {
     1060                            "required": false,
     1061                            "description": "List of the trackbacks sent.",
     1062                            "type": "array",
     1063                            "items": {
     1064                                "type": "string",
     1065                                "format": "uri"
     1066                            }
     1067                        },
    10121068                        "meta": {
    10131069                            "required": false,
    10141070                            "description": "Meta fields.",