Make WordPress Core

Ticket #35658: 35658.33.diff

File 35658.33.diff, 2.8 KB (added by helen, 8 years ago)
  • src/wp-includes/functions.php

     
    53565356        // Strip timezone information
    53575357        return preg_replace( '/(?:Z|[+-]\d{2}(?::\d{2})?)$/', '', $formatted );
    53585358}
     5359
     5360/**
     5361 * Check if an object type exists. By default, these are `post`, `comment`, `user`, and `term`.
     5362 *
     5363 * @param  string $object_type Object type to check.
     5364 * @return bool                True if the object type exists, false if not.
     5365 */
     5366function wp_object_type_exists( $object_type ) {
     5367        /**
     5368         * Filters WordPress object types.
     5369         *
     5370         * @since 4.6.0
     5371         *
     5372         * @param array  $types Array of object types.
     5373         */
     5374        $types = apply_filters( 'wp_object_types', array( 'post', 'comment', 'user', 'term' ) );
     5375
     5376        if ( in_array( $object_type, $types ) ) {
     5377                return true;
     5378        }
     5379
     5380        return false;
     5381}
  • src/wp-includes/meta.php

     
    10151015                $wp_meta_keys = array();
    10161016        }
    10171017
    1018         /* translators: object type name */
    1019         if ( ! in_array( $object_type, array( 'post', 'comment', 'user', 'term' ) ) ) {
    1020                 _doing_it_wrong( __FUNCTION__, sprintf( __( 'Invalid object type: %s.' ), $object_type ), '4.6.0' );
     1018        if ( ! wp_object_type_exists( $object_type ) ) {
     1019                return new WP_Error( 'register_meta_failed', __( 'Meta can only be registered against a core object type.' ) );
    10211020        }
    10221021
    10231022        $defaults = array(
     
    10631062
    10641063        // Object subtype is required if using the args style of registration
    10651064        if ( ! $has_old_sanitize_cb && empty( $args['object_subtype'] ) ) {
    1066                 return false;
     1065                return new WP_Error( 'register_meta_failed', __( 'Meta must be registered against an object subtype.' ) );
    10671066        }
    10681067
    10691068        // If `auth_callback` is not provided, fall back to `is_protected_meta()`.
     
    10971096                return true;
    10981097        }
    10991098
    1100         return false;
     1099        return new WP_Error( 'register_meta_failed', __( 'Sanitize and auth callbacks registered; meta key not registered.' ) );
    11011100}
    11021101
    11031102/**
     
    11191118        }
    11201119
    11211120        // Only specific core object types are supported.
    1122         if ( ! in_array( $object_type, array( 'post', 'comment', 'user', 'term' ) ) ) {
    1123                 return false;
     1121        if ( ! wp_object_type_exists( $object_type ) ) {
     1122                return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key. Not a core object type.' ) );
    11241123        }
    11251124
    11261125        if ( ! isset( $wp_meta_keys[ $object_type ] ) ) {
     
    12181217                return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key. Not registered.' ) );
    12191218        }
    12201219
    1221         if ( ! in_array( $object_type, array( 'post', 'comment', 'user', 'term' ) ) ) {
     1220        if ( ! wp_object_type_exists( $object_type ) ) {
    12221221                return new WP_Error( 'invalid_meta_key', __( 'Invalid meta key. Not a core object type.' ) );
    12231222        }
    12241223