Make WordPress Core


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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.