WordPress.org

Make WordPress Core

Ticket #44238: 44238.1.diff

File 44238.1.diff, 2.1 KB (added by spacedmonkey, 21 months ago)
  • src/wp-includes/meta.php

     
    952952function is_protected_meta( $meta_key, $meta_type = null ) {
    953953        $protected = ( '_' == $meta_key[0] );
    954954
     955        if( $meta_type ) {
     956                /**
     957                 * Filters whether a meta key is considered protected.
     958                 *
     959                 * @since 5.0.0
     960                 *
     961                 * @param bool $protected Whether the key is considered protected.
     962                 * @param string $meta_key Meta key.
     963                 * @param string|null $meta_type Type of object metadata is for (e.g., comment, post, or user).
     964                 */
     965                $protected = apply_filters( "protected_{$meta_type}_meta_{$meta_key}", $protected, $meta_key, $meta_type );
     966        }
    955967        /**
    956968         * Filters whether a meta key is considered protected.
    957969         *
     
    10261038                $wp_meta_keys = array();
    10271039        }
    10281040
     1041        $protected = ( '_' == $meta_key[0] );
     1042
    10291043        $defaults = array(
    10301044                'type'              => 'string',
    10311045                'description'       => '',
    10321046                'single'            => false,
     1047                'protected'         => $protected,
    10331048                'sanitize_callback' => null,
    10341049                'auth_callback'     => null,
    10351050                'show_in_rest'      => false,
     
    10671082        $args = apply_filters( 'register_meta_args', $args, $defaults, $object_type, $meta_key );
    10681083        $args = wp_parse_args( $args, $defaults );
    10691084
     1085        if ( $protected ) {
     1086                $protected_callback = "__return_true";
     1087        } else {
     1088                $protected_callback = "__return_false";
     1089        }
     1090
     1091        add_filter( "protected_{$meta_type}_meta_{$meta_key}", $protected_callback, 8, 1 );
     1092
     1093
    10701094        // If `auth_callback` is not provided, fall back to `is_protected_meta()`.
    10711095        if ( empty( $args['auth_callback'] ) ) {
    10721096                if ( is_protected_meta( $meta_key, $object_type ) ) {
     
    11491173                remove_filter( "auth_{$object_type}_meta_{$meta_key}", $args['auth_callback'] );
    11501174        }
    11511175
     1176        if ( isset( $args['protected'] )  ) {
     1177                if ( $args['protected'] ) {
     1178                        $protected_callback = "__return_true";
     1179                } else {
     1180                        $protected_callback = "__return_false";
     1181                }
     1182                remove_filter( "protected_{$object_type}_meta_{$meta_key}", $protected_callback, 8 );
     1183        }
     1184
    11521185        unset( $wp_meta_keys[ $object_type ][ $meta_key ] );
    11531186
    11541187        // Do some clean up