Make WordPress Core


Ignore:
Timestamp:
02/09/2026 04:43:35 PM (4 months ago)
Author:
jorgefilipecosta
Message:

Abilities API: Add core/get-settings ability.

Introduce a new core/get-settings ability to the WordPress Abilities API that dynamically discovers and exposes WordPress settings. Settings with show_in_abilities enabled are exposed through this ability.

Props jorgefilipecosta, jason_the_adams, mukeshpanchal27, justlevine, ovidiu-galatan.
Fixes #64605.

File:
1 edited

Legend:

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

    r61470 r61600  
    27442744        'blogname',
    27452745        array(
    2746             'show_in_rest' => array(
     2746            'show_in_rest'      => array(
    27472747                'name' => 'title',
    27482748            ),
    2749             'type'         => 'string',
    2750             'label'        => __( 'Title' ),
    2751             'description'  => __( 'Site title.' ),
     2749            'show_in_abilities' => true,
     2750            'type'              => 'string',
     2751            'label'             => __( 'Title' ),
     2752            'description'       => __( 'Site title.' ),
    27522753        )
    27532754    );
     
    27572758        'blogdescription',
    27582759        array(
    2759             'show_in_rest' => array(
     2760            'show_in_rest'      => array(
    27602761                'name' => 'description',
    27612762            ),
    2762             'type'         => 'string',
    2763             'label'        => __( 'Tagline' ),
    2764             'description'  => __( 'Site tagline.' ),
     2763            'show_in_abilities' => true,
     2764            'type'              => 'string',
     2765            'label'             => __( 'Tagline' ),
     2766            'description'       => __( 'Site tagline.' ),
    27652767        )
    27662768    );
     
    27712773            'siteurl',
    27722774            array(
    2773                 'show_in_rest' => array(
     2775                'show_in_rest'      => array(
    27742776                    'name'   => 'url',
    27752777                    'schema' => array(
     
    27772779                    ),
    27782780                ),
    2779                 'type'         => 'string',
    2780                 'description'  => __( 'Site URL.' ),
     2781                'show_in_abilities' => true,
     2782                'type'              => 'string',
     2783                'description'       => __( 'Site URL.' ),
    27812784            )
    27822785        );
     
    27882791            'admin_email',
    27892792            array(
    2790                 'show_in_rest' => array(
     2793                'show_in_rest'      => array(
    27912794                    'name'   => 'email',
    27922795                    'schema' => array(
     
    27942797                    ),
    27952798                ),
    2796                 'type'         => 'string',
    2797                 'description'  => __( 'This address is used for admin purposes, like new user notification.' ),
     2799                'show_in_abilities' => true,
     2800                'type'              => 'string',
     2801                'description'       => __( 'This address is used for admin purposes, like new user notification.' ),
    27982802            )
    27992803        );
     
    28042808        'timezone_string',
    28052809        array(
    2806             'show_in_rest' => array(
     2810            'show_in_rest'      => array(
    28072811                'name' => 'timezone',
    28082812            ),
    2809             'type'         => 'string',
    2810             'description'  => __( 'A city in the same timezone as you.' ),
     2813            'show_in_abilities' => true,
     2814            'type'              => 'string',
     2815            'description'       => __( 'A city in the same timezone as you.' ),
    28112816        )
    28122817    );
     
    28162821        'date_format',
    28172822        array(
    2818             'show_in_rest' => true,
    2819             'type'         => 'string',
    2820             'description'  => __( 'A date format for all date strings.' ),
     2823            'show_in_rest'      => true,
     2824            'show_in_abilities' => true,
     2825            'type'              => 'string',
     2826            'description'       => __( 'A date format for all date strings.' ),
    28212827        )
    28222828    );
     
    28262832        'time_format',
    28272833        array(
    2828             'show_in_rest' => true,
    2829             'type'         => 'string',
    2830             'description'  => __( 'A time format for all time strings.' ),
     2834            'show_in_rest'      => true,
     2835            'show_in_abilities' => true,
     2836            'type'              => 'string',
     2837            'description'       => __( 'A time format for all time strings.' ),
    28312838        )
    28322839    );
     
    28362843        'start_of_week',
    28372844        array(
    2838             'show_in_rest' => true,
    2839             'type'         => 'integer',
    2840             'description'  => __( 'A day number of the week that the week should start on.' ),
     2845            'show_in_rest'      => true,
     2846            'show_in_abilities' => true,
     2847            'type'              => 'integer',
     2848            'description'       => __( 'A day number of the week that the week should start on.' ),
    28412849        )
    28422850    );
     
    28462854        'WPLANG',
    28472855        array(
    2848             'show_in_rest' => array(
     2856            'show_in_rest'      => array(
    28492857                'name' => 'language',
    28502858            ),
    2851             'type'         => 'string',
    2852             'description'  => __( 'WordPress locale code.' ),
    2853             'default'      => 'en_US',
     2859            'show_in_abilities' => true,
     2860            'type'              => 'string',
     2861            'description'       => __( 'WordPress locale code.' ),
     2862            'default'           => 'en_US',
    28542863        )
    28552864    );
     
    28592868        'use_smilies',
    28602869        array(
    2861             'show_in_rest' => true,
    2862             'type'         => 'boolean',
    2863             'description'  => __( 'Convert emoticons like :-) and :-P to graphics on display.' ),
    2864             'default'      => true,
     2870            'show_in_rest'      => true,
     2871            'show_in_abilities' => true,
     2872            'type'              => 'boolean',
     2873            'description'       => __( 'Convert emoticons like :-) and :-P to graphics on display.' ),
     2874            'default'           => true,
    28652875        )
    28662876    );
     
    28702880        'default_category',
    28712881        array(
    2872             'show_in_rest' => true,
    2873             'type'         => 'integer',
    2874             'description'  => __( 'Default post category.' ),
     2882            'show_in_rest'      => true,
     2883            'show_in_abilities' => true,
     2884            'type'              => 'integer',
     2885            'description'       => __( 'Default post category.' ),
    28752886        )
    28762887    );
     
    28802891        'default_post_format',
    28812892        array(
    2882             'show_in_rest' => true,
    2883             'type'         => 'string',
    2884             'description'  => __( 'Default post format.' ),
     2893            'show_in_rest'      => true,
     2894            'show_in_abilities' => true,
     2895            'type'              => 'string',
     2896            'description'       => __( 'Default post format.' ),
    28852897        )
    28862898    );
     
    28902902        'posts_per_page',
    28912903        array(
    2892             'show_in_rest' => true,
    2893             'type'         => 'integer',
    2894             'label'        => __( 'Maximum posts per page' ),
    2895             'description'  => __( 'Blog pages show at most.' ),
    2896             'default'      => 10,
     2904            'show_in_rest'      => true,
     2905            'show_in_abilities' => true,
     2906            'type'              => 'integer',
     2907            'label'             => __( 'Maximum posts per page' ),
     2908            'description'       => __( 'Blog pages show at most.' ),
     2909            'default'           => 10,
    28972910        )
    28982911    );
     
    29022915        'show_on_front',
    29032916        array(
    2904             'show_in_rest' => true,
    2905             'type'         => 'string',
    2906             'label'        => __( 'Show on front' ),
    2907             'description'  => __( 'What to show on the front page' ),
     2917            'show_in_rest'      => true,
     2918            'show_in_abilities' => true,
     2919            'type'              => 'string',
     2920            'label'             => __( 'Show on front' ),
     2921            'description'       => __( 'What to show on the front page' ),
    29082922        )
    29092923    );
     
    29132927        'page_on_front',
    29142928        array(
    2915             'show_in_rest' => true,
    2916             'type'         => 'integer',
    2917             'label'        => __( 'Page on front' ),
    2918             'description'  => __( 'The ID of the page that should be displayed on the front page' ),
     2929            'show_in_rest'      => true,
     2930            'show_in_abilities' => true,
     2931            'type'              => 'integer',
     2932            'label'             => __( 'Page on front' ),
     2933            'description'       => __( 'The ID of the page that should be displayed on the front page' ),
    29192934        )
    29202935    );
     
    29242939        'page_for_posts',
    29252940        array(
    2926             'show_in_rest' => true,
    2927             'type'         => 'integer',
    2928             'description'  => __( 'The ID of the page that should display the latest posts' ),
     2941            'show_in_rest'      => true,
     2942            'show_in_abilities' => true,
     2943            'type'              => 'integer',
     2944            'description'       => __( 'The ID of the page that should display the latest posts' ),
    29292945        )
    29302946    );
     
    29342950        'default_ping_status',
    29352951        array(
    2936             'show_in_rest' => array(
     2952            'show_in_rest'      => array(
    29372953                'schema' => array(
    29382954                    'enum' => array( 'open', 'closed' ),
    29392955                ),
    29402956            ),
    2941             'type'         => 'string',
    2942             'description'  => __( 'Allow link notifications from other blogs (pingbacks and trackbacks) on new articles.' ),
     2957            'show_in_abilities' => true,
     2958            'type'              => 'string',
     2959            'description'       => __( 'Allow link notifications from other blogs (pingbacks and trackbacks) on new articles.' ),
    29432960        )
    29442961    );
     
    29482965        'default_comment_status',
    29492966        array(
    2950             'show_in_rest' => array(
     2967            'show_in_rest'      => array(
    29512968                'schema' => array(
    29522969                    'enum' => array( 'open', 'closed' ),
    29532970                ),
    29542971            ),
    2955             'type'         => 'string',
    2956             'label'        => __( 'Allow comments on new posts' ),
    2957             'description'  => __( 'Allow people to submit comments on new posts.' ),
     2972            'show_in_abilities' => true,
     2973            'type'              => 'string',
     2974            'label'             => __( 'Allow comments on new posts' ),
     2975            'description'       => __( 'Allow people to submit comments on new posts.' ),
    29582976        )
    29592977    );
     
    29863004 *     @type string     $description       A description of the data attached to this setting.
    29873005 *     @type callable   $sanitize_callback A callback function that sanitizes the option's value.
    2988  *     @type bool|array $show_in_rest      Whether data associated with this setting should be included in the REST API.
    2989  *                                         When registering complex settings, this argument may optionally be an
    2990  *                                         array with a 'schema' key.
    2991  *     @type mixed      $default           Default value when calling `get_option()`.
     3006 *     @type bool|array $show_in_rest        Whether data associated with this setting should be included in the REST API.
     3007 *                                           When registering complex settings, this argument may optionally be an
     3008 *                                           array with a 'schema' key.
     3009 *     @type bool       $show_in_abilities  Whether this setting should be exposed through the Abilities API.
     3010 *                                           Default false.
     3011 *     @type mixed      $default            Default value when calling `get_option()`.
    29923012 * }
    29933013 */
     
    30023022
    30033023    $defaults = array(
    3004         'type'              => 'string',
    3005         'group'             => $option_group,
    3006         'label'             => '',
    3007         'description'       => '',
    3008         'sanitize_callback' => null,
    3009         'show_in_rest'      => false,
     3024        'type'               => 'string',
     3025        'group'              => $option_group,
     3026        'label'              => '',
     3027        'description'        => '',
     3028        'sanitize_callback'  => null,
     3029        'show_in_rest'       => false,
     3030        'show_in_abilities'  => false,
    30103031    );
    30113032
Note: See TracChangeset for help on using the changeset viewer.