Make WordPress Core

Changeset 61086


Ignore:
Timestamp:
10/29/2025 01:43:52 PM (12 months ago)
Author:
gziolo
Message:

Abilities API: Improve annotations documentation and add permission callback validation

Code quality changes included:

  • Expands annotations parameter documentation with detailed descriptions for readonly,

destructive, and idempotent properties.

  • Standardizes type order from null|bool to bool|null per coding standards.
  • Adds validation check to ensure permission callback is callable before invocation.

Developed in ​https://github.com/WordPress/wordpress-develop/pull/10431.

Follow-up for [61067], [61032].
See #64134.

Location:
trunk/src/wp-includes
Files:
3 edited

Legend:

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

    r61071 r61086  
    255255 *         Optional. Additional metadata for the ability.
    256256 *
    257  *         @type array<string, bool|null> $annotations  Optional. Annotation metadata for the ability. Provides
    258  *                                                      additional semantic information about the ability's
    259  *                                                      characteristics and behavior.
     257 *         @type array<string, bool|null> $annotations  {
     258 *             Optional. Semantic annotations describing the ability's behavioral characteristics.
     259 *             These annotations are hints for tooling and documentation.
     260 *
     261 *             @type bool|null $readonly    Optional. If true, the ability does not modify its environment.
     262 *             @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment.
     263 *                                          If false, the ability performs only additive updates.
     264 *             @type bool|null $idempotent  Optional. If true, calling the ability repeatedly with the same arguments
     265 *                                          will have no additional effect on its environment.
     266 *         }
    260267 *         @type bool                     $show_in_rest Optional. Whether to expose this ability in the REST API.
    261268 *                                                      When true, the ability can be invoked via HTTP requests.
  • trunk/src/wp-includes/abilities-api/class-wp-abilities-registry.php

    r61071 r61086  
    6262         *         Optional. Additional metadata for the ability.
    6363         *
    64          *         @type array<string, null|bool> $annotations  Optional. Annotation metadata for the ability.
     64         *         @type array<string, bool|null> $annotations  {
     65         *             Optional. Semantic annotations describing the ability's behavioral characteristics.
     66         *             These annotations are hints for tooling and documentation.
     67         *
     68         *             @type bool|null $readonly    Optional. If true, the ability does not modify its environment.
     69         *             @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment.
     70         *                                          If false, the ability performs only additive updates.
     71         *             @type bool|null $idempotent  Optional. If true, calling the ability repeatedly with the same arguments
     72         *                                          will have no additional effect on its environment.
     73         *         }
    6574         *         @type bool                     $show_in_rest Optional. Whether to expose this ability in the REST API. Default false.
    6675         *     }
  • trunk/src/wp-includes/abilities-api/class-wp-ability.php

    r61071 r61086  
    3434         *
    3535         * @since 6.9.0
    36          * @var array<string, (null|bool)>
     36         * @var array<string, bool|null>
    3737         */
    3838        protected static $default_annotations = array(
    … …  
    151151         *         Optional. Additional metadata for the ability.
    152152         *
    153          *         @type array<string, null|bool> $annotations  Optional. Annotation metadata for the ability.
     153         *         @type array<string, bool|null> $annotations  {
     154         *             Optional. Semantic annotations describing the ability's behavioral characteristics.
     155         *             These annotations are hints for tooling and documentation.
     156         *
     157         *             @type bool|null $readonly    Optional. If true, the ability does not modify its environment.
     158         *             @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment.
     159         *                                          If false, the ability performs only additive updates.
     160         *             @type bool|null $idempotent  Optional. If true, calling the ability repeatedly with the same arguments
     161         *                                          will have no additional effect on its environment.
     162         *         }
    154163         *         @type bool                     $show_in_rest Optional. Whether to expose this ability in the REST API. Default false.
    155164         *     }
    … …  
    206215         *         Optional. Additional metadata for the ability.
    207216         *
    208          *         @type array<string, null|bool> $annotations  Optional. Annotation metadata for the ability.
     217         *         @type array<string, bool|null> $annotations  {
     218         *             Optional. Semantic annotations describing the ability's behavioral characteristics.
     219         *             These annotations are hints for tooling and documentation.
     220         *
     221         *             @type bool|null $readonly    Optional. If true, the ability does not modify its environment.
     222         *             @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment.
     223         *                                          If false, the ability performs only additive updates.
     224         *             @type bool|null $idempotent  Optional. If true, calling the ability repeatedly with the same arguments
     225         *                                          will have no additional effect on its environment.
     226         *         }
    209227         *         @type bool                     $show_in_rest Optional. Whether to expose this ability in the REST API. Default false.
    210228         *     }
    … …  
    225243         *         Additional metadata for the ability.
    226244         *
    227          *         @type array<string, null|bool> $annotations  Optional. Annotation metadata for the ability.
     245         *         @type array<string, bool|null> $annotations  {
     246         *             Semantic annotations describing the ability's behavioral characteristics.
     247         *             These annotations are hints for tooling and documentation.
     248         *
     249         *             @type bool|null $readonly    If true, the ability does not modify its environment.
     250         *             @type bool|null $destructive If true, the ability may perform destructive updates to its environment.
     251         *                                          If false, the ability performs only additive updates.
     252         *             @type bool|null $idempotent  If true, calling the ability repeatedly with the same arguments
     253         *                                          will have no additional effect on its environment.
     254         *         }
    228255         *         @type bool                     $show_in_rest Whether to expose this ability in the REST API. Default false.
    229256         *     }
    … …  
    499526         */
    500527        public function check_permissions( $input = null ) {
     528                if ( ! is_callable( $this->permission_callback ) ) {
     529                        return new WP_Error(
     530                                'ability_invalid_permission_callback',
     531                                /* translators: %s ability name. */
     532                                sprintf( __( 'Ability "%s" does not have a valid permission callback.' ), esc_html( $this->name ) )
     533                        );
     534                }
     535
    501536                return $this->invoke_callback( $this->permission_callback, $input );
    502537        }
Note: See TracChangeset for help on using the changeset viewer.