WordPress.org

Make WordPress Core

Ticket #10972: posts-only-sanitize-once.patch

File posts-only-sanitize-once.patch, 2.2 KB (added by johanee, 9 years ago)

Only sanitize_post() once

  • wp-includes/default-filters.php

     
    151151add_filter( 'comment_email',        'antispambot'                         );
    152152add_filter( 'option_tag_base',      '_wp_filter_taxonomy_base'            );
    153153add_filter( 'option_category_base', '_wp_filter_taxonomy_base'            );
     154add_filter( 'the_posts',            '_sanitize_the_posts'                 );
    154155add_filter( 'the_posts',            '_close_comments_for_old_posts'       );
    155156add_filter( 'comments_open',        '_close_comments_for_old_post', 10, 2 );
    156157add_filter( 'pings_open',           '_close_comments_for_old_post', 10, 2 );
  • wp-includes/post.php

     
    232232                        return $null;
    233233        } elseif ( is_object($post) && empty($post->filter) ) {
    234234                _get_post_ancestors($post);
    235                 wp_cache_add($post->ID, $post, 'posts');
    236                 $_post = &$post;
     235                $_post = sanitize_post($post, 'raw');
     236                wp_cache_add($post->ID, $_post, 'posts');
    237237        } else {
    238238                if ( is_object($post) )
    239239                        $post = $post->ID;
     
    243243                        if ( ! $_post )
    244244                                return $null;
    245245                        _get_post_ancestors($_post);
     246                        $_post = sanitize_post($_post, 'raw');
    246247                        wp_cache_add($_post->ID, $_post, 'posts');
    247248                }
    248249        }
    249250
    250         $_post = sanitize_post($_post, $filter);
     251        if ($filter != 'raw')
     252                $_post = sanitize_post($_post, $filter);
    251253
    252254        if ( $output == OBJECT ) {
    253255                return $_post;
     
    834836}
    835837
    836838/**
     839 * Sanitize (filter 'raw') all posts returned in wp_query, once.  Hooked to the_posts.
     840 *
     841 * @access private
     842 * @since 2.9.0
     843 *
     844 * @param array $posts Array of post data objects.
     845 * @return array Sanitized posts objects
     846 */
     847function _sanitize_the_posts( $posts ) {
     848        if ( empty($posts) )
     849                return $posts;
     850
     851        $num_posts = count($posts);
     852        for ($i = 0; $i < $num_posts; $i++) {
     853                $posts[$i] = sanitize_post($posts[$i], 'raw');
     854        }
     855
     856        return $posts;
     857}
     858
     859/**
    837860 * Sanitize post field based on context.
    838861 *
    839862 * Possible context values are:  'raw', 'edit', 'db', 'display', 'attribute' and 'js'. The