Make WordPress Core

Changeset 58230


Ignore:
Timestamp:
05/29/2024 08:51:04 AM (7 weeks ago)
Author:
ellatrix
Message:

Options: Add 'label' argument to register_setting.

The 'label' will displayed to users when editing core or custom settings via block editors. It avoids hardcoding Settings labels and improves extensibility.

Backports https://github.com/WordPress/gutenberg/pull/59243.

Props mamaduka, timothyblynjacobs, ellatrix.

Fixes #61023.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/option.php

    r58182 r58230  
    26602660            ),
    26612661            'type'         => 'string',
     2662            'label'        => __( 'Title' ),
    26622663            'description'  => __( 'Site title.' ),
    26632664        )
     
    26722673            ),
    26732674            'type'         => 'string',
     2675            'label'        => __( 'Tagline' ),
    26742676            'description'  => __( 'Site tagline.' ),
    26752677        )
     
    28022804            'show_in_rest' => true,
    28032805            'type'         => 'integer',
     2806            'label'        => __( 'Maximum posts per page' ),
    28042807            'description'  => __( 'Blog pages show at most.' ),
    28052808            'default'      => 10,
     
    28132816            'show_in_rest' => true,
    28142817            'type'         => 'string',
     2818            'label'        => __( 'Show on front' ),
    28152819            'description'  => __( 'What to show on the front page' ),
    28162820        )
     
    28232827            'show_in_rest' => true,
    28242828            'type'         => 'integer',
     2829            'label'        => __( 'Page on front' ),
    28252830            'description'  => __( 'The ID of the page that should be displayed on the front page' ),
    28262831        )
     
    28612866            ),
    28622867            'type'         => 'string',
     2868            'label'        => __( 'Allow comments on new posts' ),
    28632869            'description'  => __( 'Allow people to submit comments on new posts.' ),
    28642870        )
     
    28752881 * @since 5.5.0 `$new_whitelist_options` was renamed to `$new_allowed_options`.
    28762882 *              Please consider writing more inclusive code.
     2883 * @since 6.6.0 Added the `label` argument.
    28772884 *
    28782885 * @global array $new_allowed_options
     
    28882895 *     @type string     $type              The type of data associated with this setting.
    28892896 *                                         Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'.
     2897 *     @type string     $label             A label of the data attached to this setting.
    28902898 *     @type string     $description       A description of the data attached to this setting.
    28912899 *     @type callable   $sanitize_callback A callback function that sanitizes the option's value.
     
    29082916        'type'              => 'string',
    29092917        'group'             => $option_group,
     2918        'label'             => '',
    29102919        'description'       => '',
    29112920        'sanitize_callback' => null,
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php

    r56548 r58230  
    238238            $default_schema = array(
    239239                'type'        => empty( $args['type'] ) ? null : $args['type'],
     240                'title'       => empty( $args['label'] ) ? '' : $args['label'],
    240241                'description' => empty( $args['description'] ) ? '' : $args['description'],
    241242                'default'     => isset( $args['default'] ) ? $args['default'] : null,
  • trunk/tests/phpunit/tests/rest-api/rest-settings-controller.php

    r55457 r58230  
    782782        $this->assertSame( 3, $response->data['mycustomsetting']['test3'] );
    783783    }
     784
     785    /**
     786     * @ticket 61023
     787     */
     788    public function test_provides_setting_metadata_in_schema() {
     789        $request  = new WP_REST_Request( 'OPTIONS', '/wp/v2/settings' );
     790        $response = rest_get_server()->dispatch( $request );
     791        $data     = $response->get_data();
     792        $title    = $data['schema']['properties']['title'];
     793
     794        $this->assertSame( 'string', $title['type'] );
     795        $this->assertSame( 'Title', $title['title'] );
     796        $this->assertSame( 'Site title.', $title['description'] );
     797        $this->assertSame( null, $title['default'] );
     798    }
    784799}
  • trunk/tests/qunit/fixtures/wp-api-generated.js

    r58225 r58230  
    1073910739                    "args": {
    1074010740                        "title": {
     10741                            "title": "Title",
    1074110742                            "description": "Site title.",
    1074210743                            "type": "string",
     
    1074410745                        },
    1074510746                        "description": {
     10747                            "title": "Tagline",
    1074610748                            "description": "Site tagline.",
    1074710749                            "type": "string",
     
    1074910751                        },
    1075010752                        "url": {
     10753                            "title": "",
    1075110754                            "description": "Site URL.",
    1075210755                            "type": "string",
     
    1075510758                        },
    1075610759                        "email": {
     10760                            "title": "",
    1075710761                            "description": "This address is used for admin purposes, like new user notification.",
    1075810762                            "type": "string",
     
    1076110765                        },
    1076210766                        "timezone": {
     10767                            "title": "",
    1076310768                            "description": "A city in the same timezone as you.",
    1076410769                            "type": "string",
     
    1076610771                        },
    1076710772                        "date_format": {
     10773                            "title": "",
    1076810774                            "description": "A date format for all date strings.",
    1076910775                            "type": "string",
     
    1077110777                        },
    1077210778                        "time_format": {
     10779                            "title": "",
    1077310780                            "description": "A time format for all time strings.",
    1077410781                            "type": "string",
     
    1077610783                        },
    1077710784                        "start_of_week": {
     10785                            "title": "",
    1077810786                            "description": "A day number of the week that the week should start on.",
    1077910787                            "type": "integer",
     
    1078110789                        },
    1078210790                        "language": {
     10791                            "title": "",
    1078310792                            "description": "WordPress locale code.",
    1078410793                            "type": "string",
     
    1078610795                        },
    1078710796                        "use_smilies": {
     10797                            "title": "",
    1078810798                            "description": "Convert emoticons like :-) and :-P to graphics on display.",
    1078910799                            "type": "boolean",
     
    1079110801                        },
    1079210802                        "default_category": {
     10803                            "title": "",
    1079310804                            "description": "Default post category.",
    1079410805                            "type": "integer",
     
    1079610807                        },
    1079710808                        "default_post_format": {
     10809                            "title": "",
    1079810810                            "description": "Default post format.",
    1079910811                            "type": "string",
     
    1080110813                        },
    1080210814                        "posts_per_page": {
     10815                            "title": "Maximum posts per page",
    1080310816                            "description": "Blog pages show at most.",
    1080410817                            "type": "integer",
     
    1080610819                        },
    1080710820                        "show_on_front": {
     10821                            "title": "Show on front",
    1080810822                            "description": "What to show on the front page",
    1080910823                            "type": "string",
     
    1081110825                        },
    1081210826                        "page_on_front": {
     10827                            "title": "Page on front",
    1081310828                            "description": "The ID of the page that should be displayed on the front page",
    1081410829                            "type": "integer",
     
    1081610831                        },
    1081710832                        "page_for_posts": {
     10833                            "title": "",
    1081810834                            "description": "The ID of the page that should display the latest posts",
    1081910835                            "type": "integer",
     
    1082110837                        },
    1082210838                        "default_ping_status": {
     10839                            "title": "",
    1082310840                            "description": "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles.",
    1082410841                            "type": "string",
     
    1083010847                        },
    1083110848                        "default_comment_status": {
     10849                            "title": "Allow comments on new posts",
    1083210850                            "description": "Allow people to submit comments on new posts.",
    1083310851                            "type": "string",
     
    1083910857                        },
    1084010858                        "site_logo": {
     10859                            "title": "",
    1084110860                            "description": "Site logo.",
    1084210861                            "type": "integer",
     
    1084410863                        },
    1084510864                        "site_icon": {
     10865                            "title": "",
    1084610866                            "description": "Site icon.",
    1084710867                            "type": "integer",
Note: See TracChangeset for help on using the changeset viewer.