WordPress.org

Make WordPress Core

Ticket #8177: 8177.3.diff

File 8177.3.diff, 7.7 KB (added by obenland, 13 months ago)
  • wp-includes/comment.php

     
    20722072// 
    20732073 
    20742074/** 
    2075  * Close comments on old posts on the fly, without any extra DB queries. Hooked to the_posts. 
     2075 * Close comments on old posts on the fly, without any extra DB queries. 
     2076 * Hooked to the_posts. 
    20762077 * 
    20772078 * @access private 
    20782079 * @since 2.7.0 
    20792080 * 
    20802081 * @param object $posts Post data object. 
    2081  * @param object $query Query object. 
    20822082 * @return object 
    20832083 */ 
    2084 function _close_comments_for_old_posts( $posts, $query ) { 
    2085         if ( empty( $posts ) || ! $query->is_singular() || ! get_option( 'close_comments_for_old_posts' ) ) 
     2084function _close_comments_for_old_posts( $posts ) { 
     2085        if ( empty( $posts ) || ! get_option( 'close_comments_for_old_posts' ) ) 
    20862086                return $posts; 
    20872087 
    20882088        $post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) ); 
     
    20932093        if ( ! $days_old ) 
    20942094                return $posts; 
    20952095 
    2096         if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) { 
    2097                 $posts[0]->comment_status = 'closed'; 
    2098                 $posts[0]->ping_status = 'closed'; 
    2099         } 
     2096        for ( $i = 0; $i < count( $posts ); $i++ ) { 
     2097                if ( time() - strtotime( $posts[ $i ]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) { 
     2098                        $posts[ $i ]->comment_status = 'closed'; 
     2099                        $posts[ $i ]->ping_status    = 'closed'; 
     2100                } 
     2101        } 
    21002102 
    21012103        return $posts; 
    21022104} 
     
    21152117        if ( ! $open ) 
    21162118                return $open; 
    21172119 
    2118         if ( !get_option('close_comments_for_old_posts') ) 
     2120        if ( ! get_option( 'close_comments_for_old_posts' ) ) 
    21192121                return $open; 
    21202122 
    2121         $days_old = (int) get_option('close_comments_days_old'); 
    2122         if ( !$days_old ) 
     2123        $days_old = (int) get_option( 'close_comments_days_old' ); 
     2124        if ( ! $days_old ) 
    21232125                return $open; 
    21242126 
    2125         $post = get_post($post_id); 
     2127        $post = get_post( $post_id ); 
    21262128 
    21272129        $post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) ); 
    21282130        if ( ! in_array( $post->post_type, $post_types ) ) 
     
    21332135 
    21342136        return $open; 
    21352137} 
     2138 
     2139/** 
     2140 * Close comments/pings on attachments if the parent's comments are closed. 
     2141 * Hooked to the_posts. 
     2142 * 
     2143 * @access private 
     2144 * @since 3.6.0 
     2145 * 
     2146 * @param object $posts Post data object. 
     2147 * @return object 
     2148 */ 
     2149function _close_comments_for_attachments( $posts ) { 
     2150 
     2151        foreach ( (array) $posts as $key => $post ) { 
     2152                if ( 'attachment' != $post->post_type || 0 == $post->post_parent || $post->post_parent == $post->ID ) 
     2153                        continue; 
     2154 
     2155                $parent = get_post( $post->post_parent ); 
     2156                $posts[ $key ]->comment_status = $parent->comment_status; 
     2157                $posts[ $key ]->ping_status    = $parent->ping_status; 
     2158        } 
     2159 
     2160        return $posts; 
     2161} 
     2162 
     2163/** 
     2164 * Close comments/pings on attachment if parents comments/pings are closed. 
     2165 * Hooked to comments_open and pings_open. 
     2166 * 
     2167 * @access private 
     2168 * @since 3.6.0 
     2169 * 
     2170 * @param bool $open Comments open or closed 
     2171 * @param int $post_id Post ID 
     2172 * @return bool $open 
     2173 */ 
     2174function _close_comments_for_attachment( $open, $post_id ) { 
     2175        if ( ! $open ) 
     2176                return $open; 
     2177 
     2178        $post = get_post( $post_id ); 
     2179 
     2180        if ( 'attachment' != $post->post_type || 0 == $post->post_parent ) 
     2181                return $open; 
     2182 
     2183        $parent = get_post( $post->post_parent ); 
     2184 
     2185        if ( ! $parent ) 
     2186                return $open; 
     2187 
     2188        if ( 'comments_open' == current_filter() ) 
     2189                $open = ( 'open' == $parent->comment_status ); 
     2190        else //pings 
     2191                $open = ( 'open' == $parent->ping_status ); 
     2192 
     2193        return $open; 
     2194} 
     2195 No newline at end of file 
  • wp-includes/default-filters.php

     
    174174add_filter( 'the_author',         'ent2ncr',      8 ); 
    175175 
    176176// Misc filters 
    177 add_filter( 'option_ping_sites',        'privacy_ping_filter'                 ); 
    178 add_filter( 'option_blog_charset',      '_wp_specialchars'                    ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop 
    179 add_filter( 'option_home',              '_config_wp_home'                     ); 
    180 add_filter( 'option_siteurl',           '_config_wp_siteurl'                  ); 
    181 add_filter( 'tiny_mce_before_init',     '_mce_set_direction'                  ); 
    182 add_filter( 'pre_kses',                 'wp_pre_kses_less_than'               ); 
    183 add_filter( 'sanitize_title',           'sanitize_title_with_dashes',   10, 3 ); 
    184 add_action( 'check_comment_flood',      'check_comment_flood_db',       10, 3 ); 
    185 add_filter( 'comment_flood_filter',     'wp_throttle_comment_flood',    10, 3 ); 
    186 add_filter( 'pre_comment_content',      'wp_rel_nofollow',              15    ); 
    187 add_filter( 'comment_email',            'antispambot'                         ); 
    188 add_filter( 'option_tag_base',          '_wp_filter_taxonomy_base'            ); 
    189 add_filter( 'option_category_base',     '_wp_filter_taxonomy_base'            ); 
    190 add_filter( 'the_posts',                '_close_comments_for_old_posts', 10, 2); 
    191 add_filter( 'comments_open',            '_close_comments_for_old_post', 10, 2 ); 
    192 add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 ); 
    193 add_filter( 'editable_slug',            'urldecode'                           ); 
    194 add_filter( 'editable_slug',            'esc_textarea'                        ); 
    195 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        ); 
    196 add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri'            ); 
    197 add_filter( 'xmlrpc_pingback_error',    'xmlrpc_pingback_error'               ); 
     177add_filter( 'option_ping_sites',        'privacy_ping_filter'                   ); 
     178add_filter( 'option_blog_charset',      '_wp_specialchars'                      ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop 
     179add_filter( 'option_home',              '_config_wp_home'                       ); 
     180add_filter( 'option_siteurl',           '_config_wp_siteurl'                    ); 
     181add_filter( 'tiny_mce_before_init',     '_mce_set_direction'                    ); 
     182add_filter( 'pre_kses',                 'wp_pre_kses_less_than'                 ); 
     183add_filter( 'sanitize_title',           'sanitize_title_with_dashes',     10, 3 ); 
     184add_action( 'check_comment_flood',      'check_comment_flood_db',         10, 3 ); 
     185add_filter( 'comment_flood_filter',     'wp_throttle_comment_flood',      10, 3 ); 
     186add_filter( 'pre_comment_content',      'wp_rel_nofollow',                15    ); 
     187add_filter( 'comment_email',            'antispambot'                           ); 
     188add_filter( 'option_tag_base',          '_wp_filter_taxonomy_base'              ); 
     189add_filter( 'option_category_base',     '_wp_filter_taxonomy_base'              ); 
     190add_filter( 'the_posts',                '_close_comments_for_old_posts',  10, 2 ); 
     191add_filter( 'comments_open',            '_close_comments_for_old_post',   10, 2 ); 
     192add_filter( 'pings_open',               '_close_comments_for_old_post',   10, 2 ); 
     193add_filter( 'the_posts',                '_close_comments_for_attachments'       ); 
     194add_filter( 'comments_open',            '_close_comments_for_attachment', 10, 2 ); 
     195add_filter( 'pings_open',               '_close_comments_for_attachment', 10, 2 ); 
     196add_filter( 'editable_slug',            'urldecode'                             ); 
     197add_filter( 'editable_slug',            'esc_textarea'                          ); 
     198add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'          ); 
     199add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri'              ); 
     200add_filter( 'xmlrpc_pingback_error',    'xmlrpc_pingback_error'                 ); 
    198201 
    199202// Actions 
    200203add_action( 'wp_head',             'wp_enqueue_scripts',              1     );