WordPress.org

Make WordPress Core

Ticket #17850: 17850.2.diff

File 17850.2.diff, 3.1 KB (added by ryan, 7 years ago)
  • wp-includes/meta.php

     
    588588 * @return bool True if the key is protected, false otherwise.
    589589 */
    590590function is_protected_meta( $meta_key, $meta_type = null ) {
    591         $protected = (  '_' == $meta_key[0] );
     591        $protected = false;
     592        $protected_keys = array( '_edit_last', '_edit_lock', '_thumbnail_id' );
    592593
     594        if ( 0 === strpos( $meta_key, '_wp_' ) || 0 === strpos( $meta_key, '_menu_item_' ) ||
     595                0 === strpos( $meta_key, '__' ) || in_array( $meta_key, $protected_keys ) )
     596                $protected = true;
     597
    593598        return apply_filters( 'is_protected_meta', $protected, $meta_key, $meta_type );
    594599}
    595600
    596601/**
     602 * Determine whether a meta key is hidden
     603 *
     604 * @since 3.2.0
     605 *
     606 * @param string $meta_key Meta key
     607 * @return bool True if the key is hidden, false otherwise.
     608 */
     609function is_hidden_meta( $meta_key, $meta_type = null ) {
     610        $hidden = (  '_' == $meta_key[0] );
     611
     612        return apply_filters( 'is_hidden_meta', $hidden, $meta_key, $meta_type );
     613}
     614
     615/**
    597616 * Sanitize meta value
    598617 *
    599618 * @since 3.1.3
  • wp-admin/admin-ajax.php

     
    396396        if ( !$meta = get_post_meta_by_id( $id ) )
    397397                die('1');
    398398
    399         if ( !current_user_can( 'edit_post', $meta->post_id ) || is_protected_meta( $meta->meta_key ) )
     399        if ( !current_user_can( 'edit_post', $meta->post_id ) || is_protected_meta( $meta->meta_key ) || is_hidden_meta( $meta->meta_key ) )
    400400                die('-1');
    401401        if ( delete_meta( $meta->meta_id ) )
    402402                die('1');
     
    870870                        die('0'); // if meta doesn't exist
    871871                if ( !current_user_can( 'edit_post', $meta->post_id ) )
    872872                        die('-1');
    873                 if ( is_protected_meta( $meta->meta_key ) )
     873                if ( is_protected_meta( $meta->meta_key ) || is_hidden_meta( $meta->meta_key ) )
    874874                        die('-1');
    875875                if ( $meta->meta_value != stripslashes($value) || $meta->meta_key != stripslashes($key) ) {
    876876                        if ( !$u = update_meta( $mid, $key, $value ) )
  • wp-admin/includes/post.php

     
    207207                                continue;
    208208                        if ( $meta->post_id != $post_ID )
    209209                                continue;
    210                         if ( is_protected_meta( $value['key'] ) )
     210                        if ( is_protected_meta( $value['key'] ) || is_hidden_meta( $value['key'] ) )
    211211                                continue;
    212212                        update_meta( $key, $value['key'], $value['value'] );
    213213                }
     
    219219                                continue;
    220220                        if ( $meta->post_id != $post_ID )
    221221                                continue;
    222                         if ( is_protected_meta( $meta->meta_key ) )
     222                        if ( is_protected_meta( $meta->meta_key )  || is_hidden_meta( $meta->meta_key ) )
    223223                                continue;
    224224                        delete_meta( $key );
    225225                }
     
    662662                if ( $metakeyinput)
    663663                        $metakey = $metakeyinput; // default
    664664
    665                 if ( is_protected_meta( $metakey ) )
     665                if ( is_protected_meta( $metakey ) || is_hidden_meta( $metakey ) )
    666666                        return false;
    667667
    668668                wp_cache_delete($post_ID, 'post_meta');