Make WordPress Core

Changeset 58783


Ignore:
Timestamp:
07/23/2024 07:49:54 AM (9 months ago)
Author:
youknowriad
Message:

REST API: Remove post status prefix from REST API responses.

When using the /posts or /pages endpoints, for private posts or pages, you get the following title property: { raw: "Some title", rendered: "Private: Some title" }
this commit removes the prefix from rendered private posts titles (just like what we do for protected posts)

Props youknowriad, swissspidy, timothyblynjacobs, sergeybiryukov, ramonopoly.
Fixes #61639.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-controller.php

    r58466 r58783  
    328328        if ( rest_is_field_included( 'title.rendered', $fields ) ) {
    329329            add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     330            add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    330331
    331332            $data['title']['rendered'] = get_the_title( $post->ID );
    332333
    333334            remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     335            remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    334336        }
    335337
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php

    r56415 r58783  
    511511        if ( rest_is_field_included( 'title.rendered', $fields ) ) {
    512512            add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     513            add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    513514
    514515            /** This filter is documented in wp-includes/post-template.php */
     
    518519
    519520            remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     521            remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    520522        }
    521523
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

    r58706 r58783  
    18451845        if ( rest_is_field_included( 'title.rendered', $fields ) ) {
    18461846            add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     1847            add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    18471848
    18481849            $data['title']['rendered'] = get_the_title( $post->ID );
    18491850
    18501851            remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     1852            remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    18511853        }
    18521854
     
    20482050
    20492051    /**
    2050      * Overwrites the default protected title format.
    2051      *
    2052      * By default, WordPress will show password protected posts with a title of
    2053      * "Protected: %s", as the REST API communicates the protected status of a post
    2054      * in a machine-readable format, we remove the "Protected: " prefix.
    2055      *
    2056      * @since 4.7.0
    2057      *
    2058      * @return string Protected title format.
     2052     * Overwrites the default protected and private title format.
     2053     *
     2054     * By default, WordPress will show password protected or private posts with a title of
     2055     * "Protected: %s" or "Private: %s", as the REST API communicates the status of a post
     2056     * in a machine-readable format, we remove the prefix.
     2057     *
     2058     * @since 4.7.0
     2059     *
     2060     * @return string Title format.
    20592061     */
    20602062    public function protected_title_format() {
  • trunk/src/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php

    r58706 r58783  
    133133            if ( post_type_supports( $post->post_type, 'title' ) ) {
    134134                add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     135                add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    135136                $data[ WP_REST_Search_Controller::PROP_TITLE ] = get_the_title( $post->ID );
    136137                remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     138                remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    137139            } else {
    138140                $data[ WP_REST_Search_Controller::PROP_TITLE ] = '';
     
    184186
    185187    /**
    186      * Overwrites the default protected title format.
    187      *
    188      * By default, WordPress will show password protected posts with a title of
    189      * "Protected: %s". As the REST API communicates the protected status of a post
    190      * in a machine-readable format, we remove the "Protected: " prefix.
    191      *
    192      * @since 5.0.0
    193      *
    194      * @return string Protected title format.
     188     * Overwrites the default protected and private title format.
     189     *
     190     * By default, WordPress will show password protected or private posts with a title of
     191     * "Protected: %s" or "Private: %s", as the REST API communicates the status of a post
     192     * in a machine-readable format, we remove the prefix.
     193     *
     194     * @since 5.0.0
     195     *
     196     * @return string Title format.
    195197     */
    196198    public function protected_title_format() {
  • trunk/tests/phpunit/includes/testcase-rest-post-type-controller.php

    r57603 r58783  
    108108        if ( post_type_supports( $post->post_type, 'title' ) ) {
    109109            add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     110            add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    110111            $this->assertSame( get_the_title( $post->ID ), $data['title']['rendered'] );
    111112            remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     113            remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    112114            if ( 'edit' === $context ) {
    113115                $this->assertSame( $post->post_title, $data['title']['raw'] );
  • trunk/tests/phpunit/tests/rest-api/wpRestMenuItemsController.php

    r58065 r58783  
    863863        if ( post_type_supports( self::POST_TYPE, 'title' ) ) {
    864864            add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     865            add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    865866            $this->assertSame( $post->title, $data['title']['rendered'] );
    866867            remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
     868            remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
    867869            if ( 'edit' === $context ) {
    868870                $this->assertSame( $post->title, $data['title']['raw'] );
Note: See TracChangeset for help on using the changeset viewer.