Make WordPress Core

Changeset 61086


Ignore:
Timestamp:
10/29/2025 01:43:52 PM (6 weeks 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.