Make WordPress Core

Ticket #35658: 35658.45.diff

File 35658.45.diff, 27.6 KB (added by flixos90, 8 years ago)
  • src/wp-includes/functions.php

     
    53665366 * @return bool                True if the object type exists, false if not.
    53675367 */
    53685368function wp_object_type_exists( $object_type ) {
     5369        $object_type = explode( ':', $object_type );
     5370        $object_type = $object_type[0];
     5371
    53695372        /**
    53705373         * Filters WordPress object types.
    53715374         *
  • src/wp-includes/meta.php

     
    945945 *
    946946 * @return mixed Sanitized $meta_value.
    947947 */
    948 function sanitize_meta( $meta_key, $meta_value, $object_type, $object_subtype = '' ) {
    949         if ( ! empty( $object_subtype ) ) {
     948function sanitize_meta( $meta_key, $meta_value, $object_type ) {
     949        if ( registered_meta_key_exists( $object_type, $meta_key ) ) {
     950                $object_type = explode( ':', $object_type );
     951
     952                if ( isset( $object_type[1] ) ) {
     953                        $object_subtype = $object_type[1];
     954                } else {
     955                        $object_subtype = '';
     956                }
     957
     958                $object_type = $object_type[0];
     959
    950960                /**
    951961                 * Filters the sanitization of a specific meta key of a specific meta type and subtype.
    952962                 *
     
    972982         * key value, respectively.
    973983         *
    974984         * @since 3.3.0
    975          * @since 4.6.0 Added the `$object_subtype` parameter.
    976985         *
    977986         * @param mixed  $meta_value      Meta value to sanitize.
    978987         * @param string $meta_key        Meta key.
    979988         * @param string $object_type     Object type.
    980          * @param string $object_subtype  Object subtype.
    981989         */
    982         return apply_filters( "sanitize_{$object_type}_meta_{$meta_key}", $meta_value, $meta_key, $object_type, $object_subtype );
     990        return apply_filters( "sanitize_{$object_type}_meta_{$meta_key}", $meta_value, $meta_key, $object_type );
    983991}
    984992
    985993/**
     
    9951003 * @param array  $args {
    9961004 *     Data used to describe the meta key when registered.
    9971005 *
    998  *     @type string $object_subtype    A subtype; e.g. if the object type is "post", the post type.
    9991006 *     @type string $type              The type of data associated with this meta key.
    10001007 *     @type string $description       A description of the data attached to this meta key.
    10011008 *     @type bool   $single            Whether the meta key has one value per object, or an array of values per object.
     
    10091016 *                       Registering a meta key with distinct sanitize and auth callbacks will fire those
    10101017 *                       callbacks, but will not add to the global registry as it requires a subtype.
    10111018 */
    1012 function register_meta( $object_type, $meta_key, $args, $deprecated = null ) {
     1019function register_meta( $object_type, $meta_key, $args = array(), $deprecated = null ) {
    10131020        global $wp_meta_keys;
    10141021
    10151022        if ( ! is_array( $wp_meta_keys ) ) {
     
    10211028        }
    10221029
    10231030        $defaults = array(
    1024                 'object_subtype'    => '',
    10251031                'type'              => 'string',
    10261032                'description'       => '',
    10271033                'single'            => false,
     
    10511057
    10521058        $args = wp_parse_args( $args, $defaults );
    10531059
     1060        if ( false === strpos( $object_type, ':' ) && ! empty( $args['object_subtype'] ) ) {
     1061                $object_type .= ':' . $args['object_subtype'];
     1062                unset( $args['object_subtype'] );
     1063        }
     1064
    10541065        /**
    10551066         * Filters the registration arguments when registering meta.
    10561067         *
     
    10631074         */
    10641075        $args = apply_filters( 'register_meta_args', $args, $defaults, $object_type, $meta_key );
    10651076
     1077        $object_type = explode( ':', $object_type );
     1078
     1079        if ( 2 < count( $object_type ) ) {
     1080                // invalid object type.
     1081        }
     1082
     1083        if ( isset( $object_type[1] ) ) {
     1084                $object_subtype = $object_type[1];
     1085        } else {
     1086                $object_subtype = '';
     1087        }
     1088
     1089        $object_type = $object_type[0];
     1090
    10661091        // Object subtype is required if using the args style of registration
    1067         if ( ! $has_old_sanitize_cb && ! $has_old_auth_cb && empty( $args['object_subtype'] ) ) {
     1092        if ( ! $has_old_sanitize_cb && ! $has_old_auth_cb && empty( $object_subtype ) ) {
    10681093                return new WP_Error( 'register_meta_failed', __( 'Meta must be registered against an object subtype.' ) );
    10691094        }
    10701095
     
    10771102                }
    10781103        }
    10791104
    1080         $object_subtype = '';
    1081 
    1082         if ( ! empty( $args['object_subtype'] ) ) {
    1083                 $object_subtype = $args['object_subtype'];
    1084         }
    1085 
    10861105        // Back-compat: old sanitize and auth callbacks are applied to all of an object type.
    10871106        if ( $has_old_sanitize_cb && is_callable( $args['sanitize_callback'] ) ) {
    10881107                add_filter( "sanitize_{$object_type}_meta_{$meta_key}", $args['sanitize_callback'], 10, 4 );
     
    11041123
    11051124        // Global registry only contains meta keys registered in the new way with a subtype.
    11061125        if ( ! empty( $object_subtype ) ) {
    1107                 $wp_meta_keys[ $object_type ][ $object_subtype ][ $meta_key ] = $args;
     1126                $wp_meta_keys[ $object_type . ':' . $object_subtype ][ $meta_key ] = $args;
    11081127
    11091128                return true;
    11101129        }
     
    11181137 * @since 4.6.0
    11191138 *
    11201139 * @param string $object_type    The type of object.
    1121  * @param string $object_subtype The subtype of the object type.
    11221140 * @param string $meta_key       The meta key.
    11231141 *
    11241142 * @return bool|WP_error True if the meta key is registered to the object type and subtype. False if not.
    11251143 *                       WP_Error if an invalid object type is passed.
    11261144 */
    1127 function registered_meta_key_exists( $object_type, $object_subtype, $meta_key ) {
     1145function registered_meta_key_exists( $object_type, $meta_key ) {
    11281146        global $wp_meta_keys;
    11291147
    11301148        if ( ! is_array( $wp_meta_keys ) ) {
     
    11401158                return false;
    11411159        }
    11421160
    1143         if ( ! isset( $wp_meta_keys[ $object_type ][ $object_subtype ] ) ) {
    1144                 return false;
    1145         }
    1146 
    1147         if ( isset( $wp_meta_keys[ $object_type ][ $object_subtype ][ $meta_key ] ) ) {
     1161        if ( isset( $wp_meta_keys[ $object_type ][ $meta_key ] ) ) {
    11481162                return true;
    11491163        }
    11501164
     
    11571171 * @since 4.6.0
    11581172 *
    11591173 * @param string $object_type    The type of object.
    1160  * @param string $object_subtype The subtype of the object type.
    11611174 * @param string $meta_key       The meta key.
    11621175 *
    11631176 * @return bool|WP_Error True if successful. WP_Error if the meta key is invalid.
    11641177 */
    1165 function unregister_meta_key( $object_type, $object_subtype, $meta_key ) {
     1178function unregister_meta_key( $object_type, $meta_key ) {
    11661179        global $wp_meta_keys;
    11671180
    1168         if ( ! registered_meta_key_exists( $object_type, $object_subtype, $meta_key ) ) {
     1181        if ( ! registered_meta_key_exists( $object_type, $meta_key ) ) {
    11691182                return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key' ) );
    11701183        }
    11711184
    1172         $args = $wp_meta_keys[ $object_type ][ $object_subtype ][ $meta_key ];
     1185        $args = $wp_meta_keys[ $object_type ][ $meta_key ];
    11731186
     1187        $object_type = explode( ':', $object_type );
     1188
     1189        if ( isset( $object_type[1] ) ) {
     1190                $object_subtype = $object_type[1];
     1191        } else {
     1192                $object_subtype = '';
     1193        }
     1194
     1195        $object_type = $object_type[0];
     1196
    11741197        if ( isset( $args['sanitize_callback'] ) && is_callable( $args['sanitize_callback'] ) ) {
    11751198                remove_filter( "sanitize_{$object_type}_{$object_subtype}_meta_{$meta_key}", $args['sanitize_callback'] );
    11761199        }
     
    11791202                remove_filter( "auth_{$object_type}_{$object_subtype}_meta_{$meta_key}", $args['auth_callback'] );
    11801203        }
    11811204
    1182         unset( $wp_meta_keys[ $object_type ][ $object_subtype ][ $meta_key ] );
     1205        unset( $wp_meta_keys[ $object_type . ':' . $object_subtype ][ $meta_key ] );
    11831206
    11841207        // Do some clean up
    1185         if ( empty( $wp_meta_keys[ $object_type ][ $object_subtype ] ) ) {
    1186                 unset( $wp_meta_keys[ $object_type ][ $object_subtype ] );
     1208        if ( empty( $wp_meta_keys[ $object_type . ':' . $object_subtype ] ) ) {
     1209                unset( $wp_meta_keys[ $object_type . ':' . $object_subtype ] );
    11871210        }
    11881211
    1189         if ( empty( $wp_meta_keys[ $object_type ] ) ) {
    1190                 unset( $wp_meta_keys[ $object_type ] );
    1191         }
    1192 
    11931212        return true;
    11941213}
    11951214
     
    11981217 *
    11991218 * @since 4.6.0
    12001219 *
    1201  * @param string $object_type    The type of object. Post, comment, user, term.
    1202  * @param string $object_subtype Optional. A subtype of the object (e.g. custom post type).
     1220 * @param string $object_type The type of object. Post, comment, user, term.
    12031221 *
    12041222 * @return array List of registered meta keys.
    12051223 */
    1206 function get_registered_meta_keys( $object_type, $object_subtype = '' ) {
     1224function get_registered_meta_keys( $object_type ) {
    12071225        global $wp_meta_keys;
    12081226
    12091227        if ( ! isset( $wp_meta_keys[ $object_type ] ) ) {
    12101228                return array();
    12111229        }
    12121230
    1213         if ( empty( $object_subtype ) && isset( $wp_meta_keys[ $object_type ] ) ) {
    1214                 return $wp_meta_keys[ $object_type ];
    1215         }
    1216 
    1217         if ( ! isset( $wp_meta_keys[ $object_type ][ $object_subtype ] ) ) {
    1218                 return array();
    1219         }
    1220 
    1221         return $wp_meta_keys[ $object_type ][ $object_subtype ];
     1231        return $wp_meta_keys[ $object_type ];
    12221232}
    12231233
    12241234/**
     
    12271237 * @since 4.6.0
    12281238 *
    12291239 * @param string $object_type    Type of object to request metadata for. (e.g. comment, post, term, user)
    1230  * @param string $object_subtype The subtype of the object's type to request metadata for. (e.g. custom post type)
    12311240 * @param int    $object_id      ID of the object the metadata is for.
    12321241 * @param string $meta_key       Optional. Registered metadata key. If not specified, retrieve all registered
    12331242 *                               metadata for the specified object.
    12341243 *
    12351244 * @return mixed|WP_Error
    12361245 */
    1237 function get_registered_metadata( $object_type, $object_subtype, $object_id, $meta_key = '' ) {
     1246function get_registered_metadata( $object_type, $object_id, $meta_key = '' ) {
    12381247        global $wp_meta_keys;
    12391248
    12401249        if ( ! is_array( $wp_meta_keys ) ) {
     
    12451254                return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key. Not a core object type.' ) );
    12461255        }
    12471256
     1257        $base_object_type = explode( ':', $object_type );
     1258        $base_object_type = $base_object_type[0];
     1259
    12481260        if ( ! empty( $meta_key ) ) {
    1249                 if ( ! registered_meta_key_exists( $object_type, $object_subtype, $meta_key ) ) {
     1261                if ( ! registered_meta_key_exists( $object_type, $meta_key ) ) {
    12501262                        return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key. Not registered.' ) );
    12511263                }
    1252                 $meta_keys = get_registered_meta_keys( $object_type, $object_subtype );
     1264                $meta_keys = get_registered_meta_keys( $object_type );
    12531265                $meta_key_data = $meta_keys[ $meta_key ];
    12541266
    1255                 $data = get_metadata( $object_type, $object_id, $meta_key, $meta_key_data['single'] );
     1267                $data = get_metadata( $base_object_type, $object_id, $meta_key, $meta_key_data['single'] );
    12561268
    12571269                return $data;
    12581270        }
    12591271
    1260         $data = get_metadata( $object_type, $object_id );
     1272        $data = get_metadata( $base_object_type, $object_id );
    12611273
    1262         $meta_keys = get_registered_meta_keys( $object_type, $object_subtype );
     1274        $meta_keys = get_registered_meta_keys( $object_type );
    12631275        $registered_data = array();
    12641276
    12651277        // Someday, array_filter()
  • tests/phpunit/tests/meta/registerMeta.php

     
    6969        }
    7070
    7171        public function test_register_meta_with_valid_object_type_and_object_subtype_returns_true() {
    72                 $result = register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
    73                 unregister_meta_key( 'post', 'post', 'flight_number' );
     72                $result = register_meta( 'post:post', 'flight_number' );
     73                unregister_meta_key( 'post:post', 'flight_number' );
    7474
    7575                $this->assertTrue( $result );
    7676        }
     
    7878        public function test_register_meta_with_post_object_type_and_subtype_populates_wp_meta_keys() {
    7979                global $wp_meta_keys;
    8080
    81                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
     81                register_meta( 'post:post', 'flight_number' );
    8282                $actual = $wp_meta_keys;
    83                 unregister_meta_key( 'post', 'post', 'flight_number' );
     83                unregister_meta_key( 'post:post', 'flight_number' );
    8484
    8585                $expected = array(
    86                         'post' => array(
    87                                 'post' => array(
    88                                         'flight_number' => array(
    89                                                 'object_subtype' => 'post',
    90                                                 'type' => 'string',
    91                                                 'description' => '',
    92                                                 'single' => false,
    93                                                 'sanitize_callback' => null,
    94                                                 'auth_callback' => '__return_true',
    95                                                 'show_in_rest' => false,
    96                                         ),
     86                        'post:post' => array(
     87                                'flight_number' => array(
     88                                        'type' => 'string',
     89                                        'description' => '',
     90                                        'single' => false,
     91                                        'sanitize_callback' => null,
     92                                        'auth_callback' => '__return_true',
     93                                        'show_in_rest' => false,
    9794                                ),
    9895                        ),
    9996                );
     
    104101        public function test_register_meta_with_post_object_type_and_unregistered_subtype_populates_wp_meta_keys() {
    105102                global $wp_meta_keys;
    106103
    107                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'not_a_post_type' ) );
     104                register_meta( 'post:not_a_post_type', 'flight_number' );
    108105                $actual = $wp_meta_keys;
    109                 unregister_meta_key( 'post', 'not_a_post_type', 'flight_number' );
     106                unregister_meta_key( 'post:not_a_post_type', 'flight_number' );
    110107
    111108                $expected = array(
    112                         'post' => array(
    113                                 'not_a_post_type' => array(
    114                                         'flight_number' => array(
    115                                                 'object_subtype' => 'not_a_post_type',
    116                                                 'type' => 'string',
    117                                                 'description' => '',
    118                                                 'single' => false,
    119                                                 'sanitize_callback' => null,
    120                                                 'auth_callback' => '__return_true',
    121                                                 'show_in_rest' => false,
    122                                         ),
     109                        'post:not_a_post_type' => array(
     110                                'flight_number' => array(
     111                                        'type' => 'string',
     112                                        'description' => '',
     113                                        'single' => false,
     114                                        'sanitize_callback' => null,
     115                                        'auth_callback' => '__return_true',
     116                                        'show_in_rest' => false,
    123117                                ),
    124118                        ),
    125119                );
     
    129123
    130124        public function test_register_meta_with_term_object_type_and_category_subtype_populates_wp_meta_keys() {
    131125                global $wp_meta_keys;
    132                 register_meta( 'term', 'category_icon', array( 'object_subtype' => 'category' ) );
     126                register_meta( 'term:category', 'category_icon' );
    133127                $actual = $wp_meta_keys;
    134                 unregister_meta_key( 'term', 'category', 'category_icon' );
     128                unregister_meta_key( 'term:category', 'category_icon' );
    135129
    136130                $expected = array(
    137                         'term' => array(
    138                                 'category' => array(
    139                                         'category_icon' => array(
    140                                                 'object_subtype' => 'category',
    141                                                 'type' => 'string',
    142                                                 'description' => '',
    143                                                 'single' => false,
    144                                                 'sanitize_callback' => null,
    145                                                 'auth_callback' => '__return_true',
    146                                                 'show_in_rest' => false,
    147                                         ),
     131                        'term:category' => array(
     132                                'category_icon' => array(
     133                                        'type' => 'string',
     134                                        'description' => '',
     135                                        'single' => false,
     136                                        'sanitize_callback' => null,
     137                                        'auth_callback' => '__return_true',
     138                                        'show_in_rest' => false,
    148139                                ),
    149140                        ),
    150141                );
     
    154145
    155146        public function test_register_meta_with_comment_object_type_and_subtype_populates_wp_meta_keys() {
    156147                global $wp_meta_keys;
    157                 register_meta( 'comment', 'comment_rating', array( 'object_subtype' => 'comment' ) );
     148                register_meta( 'comment:comment', 'comment_rating' );
    158149                $actual = $wp_meta_keys;
    159                 unregister_meta_key( 'comment', 'comment', 'comment_rating' );
     150                unregister_meta_key( 'comment:comment', 'comment_rating' );
    160151
    161152                $expected = array(
    162                         'comment' => array(
    163                                 'comment' => array(
    164                                         'comment_rating' => array(
    165                                                 'object_subtype' => 'comment',
    166                                                 'type' => 'string',
    167                                                 'description' => '',
    168                                                 'single' => false,
    169                                                 'sanitize_callback' => null,
    170                                                 'auth_callback' => '__return_true',
    171                                                 'show_in_rest' => false,
    172                                         ),
     153                        'comment:comment' => array(
     154                                'comment_rating' => array(
     155                                        'type' => 'string',
     156                                        'description' => '',
     157                                        'single' => false,
     158                                        'sanitize_callback' => null,
     159                                        'auth_callback' => '__return_true',
     160                                        'show_in_rest' => false,
    173161                                ),
    174162                        ),
    175163                );
     
    200188
    201189        public function test_register_meta_with_deprecated_sanitize_callback_parameter_passes_through_filter() {
    202190                register_meta( 'post', 'old_sanitized_key', array( $this, '_old_sanitize_meta_cb' ) );
    203                 $meta = sanitize_meta( 'old_sanitized_key', 'unsanitized', 'post', 'post' );
     191                $meta = sanitize_meta( 'old_sanitized_key', 'unsanitized', 'post' );
    204192
    205193                remove_filter( 'sanitize_post_meta_flight_number', array( $this, '_old_sanitize_meta_cb') );
    206194                remove_filter( 'auth_post_meta_flight_number', '__return_true');
     
    210198
    211199        public function test_register_meta_with_current_sanitize_callback_populates_wp_meta_keys() {
    212200                global $wp_meta_keys;
    213                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post', 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
     201                register_meta( 'post:post', 'flight_number', array( 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
    214202                $actual = $wp_meta_keys;
    215                 unregister_meta_key( 'post', 'post', 'flight_number' );
     203                unregister_meta_key( 'post:post', 'flight_number' );
    216204
    217205                $expected = array(
    218                         'post' => array(
    219                                 'post' => array(
    220                                         'flight_number' => array(
    221                                                 'object_subtype' => 'post',
    222                                                 'type' => 'string',
    223                                                 'description' => '',
    224                                                 'single' => false,
    225                                                 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ),
    226                                                 'auth_callback' => '__return_true',
    227                                                 'show_in_rest' => false,
    228                                         ),
     206                        'post:post' => array(
     207                                'flight_number' => array(
     208                                        'type' => 'string',
     209                                        'description' => '',
     210                                        'single' => false,
     211                                        'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ),
     212                                        'auth_callback' => '__return_true',
     213                                        'show_in_rest' => false,
    229214                                ),
    230215                        ),
    231216                );
     
    233218        }
    234219
    235220        public function test_register_meta_with_current_sanitize_callback_returns_true() {
    236                 $result = register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post', 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
    237                 unregister_meta_key( 'post', 'post', 'flight_number' );
     221                $result = register_meta( 'post:post', 'flight_number', array( 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
     222                unregister_meta_key( 'post:post', 'flight_number' );
    238223
    239224                $this->assertTrue( $result );
    240225        }
    241226
    242227        public function test_register_meta_with_new_sanitize_callback_parameter() {
    243                 register_meta( 'post', 'new_sanitized_key', array( 'object_subtype' => 'post', 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
    244                 $meta = sanitize_meta( 'new_sanitized_key', 'unsanitized', 'post', 'post' );
     228                register_meta( 'post:post', 'new_sanitized_key', array( 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
     229                $meta = sanitize_meta( 'new_sanitized_key', 'unsanitized', 'post:post' );
    245230
    246                 unregister_meta_key( 'post', 'post', 'new_sanitized_key' );
     231                unregister_meta_key( 'post:post', 'new_sanitized_key' );
    247232
    248233                $this->assertEquals( 'new_sanitized_key new sanitized', $meta );
    249234        }
    250235
    251236        public function test_register_meta_unregistered_meta_key_removes_sanitize_filter() {
    252                 register_meta( 'post', 'new_sanitized_key', array( 'object_subtype' => 'post', 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
    253                 unregister_meta_key( 'post', 'post', 'new_sanitized_key' );
     237                register_meta( 'post:post', 'new_sanitized_key', array( 'sanitize_callback' => array( $this, '_new_sanitize_meta_cb' ) ) );
     238                unregister_meta_key( 'post:post', 'new_sanitized_key' );
    254239
    255240                $has_filter = has_filter( 'sanitize_post_post_meta_new_sanitized_key', array( $this, '_new_sanitize_meta_cb' ) );
    256241
     
    258243        }
    259244
    260245        public function test_register_meta_unregistered_meta_key_removes_auth_filter() {
    261                 register_meta( 'post', 'new_auth_key', array( 'object_subtype' => 'post', 'auth_callback' => array( $this, '_new_auth_meta_cb' ) ) );
    262                 unregister_meta_key( 'post', 'post', 'new_auth_key' );
     246                register_meta( 'post:post', 'new_auth_key', array( 'auth_callback' => array( $this, '_new_auth_meta_cb' ) ) );
     247                unregister_meta_key( 'post:post', 'new_auth_key' );
    263248
    264249                $has_filter = has_filter( 'auth_post_post_meta_new_auth_key', array( $this, '_new_auth_meta_cb' ) );
    265250
     
    268253
    269254        public function test_unregister_meta_key_clears_key_from_wp_meta_keys() {
    270255                global $wp_meta_keys;
    271                 register_meta( 'post', 'registered_key', array( 'object_subtype' => 'post' ) );
    272                 unregister_meta_key( 'post', 'post', 'registered_key' );
     256                register_meta( 'post:post', 'registered_key' );
     257                unregister_meta_key( 'post:post', 'registered_key' );
    273258
    274259                $this->assertEquals( array(), $wp_meta_keys );
    275260        }
    276261
    277262        public function test_unregister_meta_key_with_invalid_key_returns_wp_error() {
    278                 $this->assertWPError( unregister_meta_key( 'post', 'post', 'not_a_registered_key' ) );
     263                $this->assertWPError( unregister_meta_key( 'post:post', 'not_a_registered_key' ) );
    279264        }
    280265
    281266        public function test_get_registered_meta_keys() {
    282                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post' ) );
    283                 register_meta( 'post', 'registered_key2', array( 'object_subtype' => 'post' ) );
     267                register_meta( 'post:post', 'registered_key1' );
     268                register_meta( 'post:post', 'registered_key2' );
    284269
    285                 $meta_keys = get_registered_meta_keys( 'post', 'post' );
     270                $meta_keys = get_registered_meta_keys( 'post:post' );
    286271
    287                 unregister_meta_key( 'post', 'post', 'registered_key1' );
    288                 unregister_meta_key( 'post', 'post', 'registered_key2' );
     272                unregister_meta_key( 'post:post', 'registered_key1' );
     273                unregister_meta_key( 'post:post', 'registered_key2' );
    289274
    290275                $this->assertArrayHasKey( 'registered_key1', $meta_keys );
    291276                $this->assertArrayHasKey( 'registered_key2', $meta_keys );
    292277        }
    293278
    294279        public function test_get_registered_meta_keys_with_subtype_without_registered_keys_is_empty() {
    295                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post' ) );
    296                 register_meta( 'post', 'registered_key2', array( 'object_subtype' => 'post' ) );
     280                register_meta( 'post:post', 'registered_key1' );
     281                register_meta( 'post:post', 'registered_key2' );
    297282
    298                 $meta_keys = get_registered_meta_keys( 'post', 'page' );
     283                $meta_keys = get_registered_meta_keys( 'post:page' );
    299284
    300                 unregister_meta_key( 'post', 'post', 'registered_key1' );
    301                 unregister_meta_key( 'post', 'post', 'registered_key2' );
     285                unregister_meta_key( 'post:post', 'registered_key1' );
     286                unregister_meta_key( 'post:post', 'registered_key2' );
    302287
    303288                $this->assertEmpty( $meta_keys );
    304289        }
    305290
    306291        public function test_get_registered_meta_keys_with_invalid_type_is_empty() {
    307                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post' ) );
    308                 register_meta( 'post', 'registered_key2', array( 'object_subtype' => 'post' ) );
     292                register_meta( 'post:post', 'registered_key1' );
     293                register_meta( 'post:post', 'registered_key2' );
    309294
    310295                $meta_keys = get_registered_meta_keys( 'invalid-type' );
    311296
    312                 unregister_meta_key( 'post', 'post', 'registered_key1' );
    313                 unregister_meta_key( 'post', 'post', 'registered_key2' );
     297                unregister_meta_key( 'post:post', 'registered_key1' );
     298                unregister_meta_key( 'post:post', 'registered_key2' );
    314299
    315300                $this->assertEmpty( $meta_keys );
    316301        }
    317302
    318         public function test_get_registered_meta_keys_has_count() {
    319                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post' ) );
    320                 register_meta( 'post', 'registered_key2', array( 'object_subtype' => 'page' ) );
     303        public function test_get_registered_meta_keys_with_only_base_type_has_0_count() {
     304                register_meta( 'post:post', 'registered_key1' );
     305                register_meta( 'post:page', 'registered_key2' );
    321306
    322307                $meta_keys = get_registered_meta_keys( 'post' );
    323308
    324                 unregister_meta_key( 'post', 'post', 'registered_key1' );
    325                 unregister_meta_key( 'post', 'page', 'registered_key2' );
     309                unregister_meta_key( 'post:post', 'registered_key1' );
     310                unregister_meta_key( 'post:page', 'registered_key2' );
    326311
    327                 $this->assertCount( 2, $meta_keys );
     312                $this->assertCount( 0, $meta_keys );
    328313        }
    329314
    330315        public function test_get_registered_meta_keys_description_arg() {
    331                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post', 'description' => 'I\'m just a field, take a good look at me' ) );
     316                register_meta( 'post:post', 'registered_key1', array( 'description' => 'I\'m just a field, take a good look at me' ) );
    332317
    333                 $meta_keys = get_registered_meta_keys( 'post', 'post' );
     318                $meta_keys = get_registered_meta_keys( 'post:post' );
    334319
    335                 unregister_meta_key( 'post', 'post', 'registered_key1' );
     320                unregister_meta_key( 'post:post', 'registered_key1' );
    336321
    337322                $this->assertEquals( 'I\'m just a field, take a good look at me', $meta_keys['registered_key1']['description'] );
    338323        }
    339324
    340325        public function test_get_registered_meta_keys_invalid_arg() {
    341                 register_meta( 'post', 'registered_key1', array( 'object_subtype' => 'post', 'invalid_arg' => 'invalid' ) );
     326                register_meta( 'post:post', 'registered_key1', array( 'invalid_arg' => 'invalid' ) );
    342327
    343                 $meta_keys = get_registered_meta_keys( 'post', 'post' );
     328                $meta_keys = get_registered_meta_keys( 'post:post' );
    344329
    345                 unregister_meta_key( 'post', 'post', 'registered_key1' );
     330                unregister_meta_key( 'post:post', 'registered_key1' );
    346331
    347332                $this->assertArrayNotHasKey( 'invalid_arg', $meta_keys['registered_key1'] );
    348333        }
    349334
    350335        public function test_get_registered_metadata() {
    351                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
     336                register_meta( 'post:post', 'flight_number' );
    352337                add_post_meta( self::$post_id, 'flight_number', 'Oceanic 815' );
    353338
    354                 $meta = get_registered_metadata( 'post', 'post', self::$post_id );
     339                $meta = get_registered_metadata( 'post:post', self::$post_id );
    355340
    356                 unregister_meta_key( 'post', 'post', 'flight_number' );
     341                unregister_meta_key( 'post:post', 'flight_number' );
    357342
    358343                $this->assertEquals( 'Oceanic 815', $meta['flight_number'][0] );
    359344        }
    360345
    361346        public function test_get_registered_metadata_by_key() {
    362                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
     347                register_meta( 'post:post', 'flight_number' );
    363348                add_post_meta( self::$post_id, 'flight_number', 'Oceanic 815' );
    364349
    365                 $meta = get_registered_metadata( 'post', 'post', self::$post_id, 'flight_number' );
     350                $meta = get_registered_metadata( 'post:post', self::$post_id, 'flight_number' );
    366351
    367                 unregister_meta_key( 'post', 'post', 'flight_number' );
     352                unregister_meta_key( 'post:post', 'flight_number' );
    368353
    369354                $this->assertEquals( 'Oceanic 815', $meta[0] );
    370355        }
    371356
    372357        public function test_get_registered_metadata_by_key_single() {
    373                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post', 'single' => true ) );
     358                register_meta( 'post:post', 'flight_number', array( 'single' => true ) );
    374359                add_post_meta( self::$post_id, 'flight_number', 'Oceanic 815' );
    375360
    376                 $meta = get_registered_metadata( 'post', 'post', self::$post_id, 'flight_number' );
     361                $meta = get_registered_metadata( 'post:post', self::$post_id, 'flight_number' );
    377362
    378                 unregister_meta_key( 'post', 'post', 'flight_number' );
     363                unregister_meta_key( 'post:post', 'flight_number' );
    379364
    380365                $this->assertEquals( 'Oceanic 815', $meta );
    381366        }
    382367
    383368        public function test_get_registered_metadata_by_invalid_key() {
    384                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
     369                register_meta( 'post:post', 'flight_number' );
    385370                add_post_meta( self::$post_id, 'flight_number', 'Oceanic 815' );
    386371
    387                 $meta = get_registered_metadata( 'post', 'post', self::$post_id, 'flight_pilot' );
     372                $meta = get_registered_metadata( 'post:post', self::$post_id, 'flight_pilot' );
    388373
    389                 unregister_meta_key( 'post', 'post', 'flight_number' );
     374                unregister_meta_key( 'post:post', 'flight_number' );
    390375
    391376                $this->assertWPError( $meta );
    392377        }
    393378
    394379        public function test_get_registered_metadata_invalid_object_type() {
    395                 register_meta( 'post', 'flight_number', array( 'object_subtype' => 'post' ) );
     380                register_meta( 'post:post', 'flight_number' );
    396381                add_post_meta( self::$post_id, 'flight_number', 'Oceanic 815' );
    397382
    398                 $meta = get_registered_metadata( 'invalid-type', 'invalid-subtype', self::$post_id );
     383                $meta = get_registered_metadata( 'invalid-type:invalid-subtype', self::$post_id );
    399384
    400                 unregister_meta_key( 'post', 'post', 'flight_number' );
     385                unregister_meta_key( 'post:post', 'flight_number' );
    401386
    402387                $this->assertWPError( $meta );
    403388        }
    404389
    405390        public function test_get_registered_metadata_invalid() {
    406                 $meta = get_registered_metadata( 'invalid-type', 'invalid-subtype', self::$post_id );
     391                $meta = get_registered_metadata( 'invalid-type:invalid-subtype', self::$post_id );
    407392
    408393                $this->assertWPError( $meta );
    409394        }