WordPress.org

Make WordPress Core

Ticket #8177: 8177.2.diff

File 8177.2.diff, 6.4 KB (added by obenland, 18 months ago)
  • wp-includes/comment.php

     
    20092009 * @return object 
    20102010 */ 
    20112011function _close_comments_for_old_posts( $posts, $query ) { 
    2012         if ( empty( $posts ) || ! $query->is_singular() || ! get_option( 'close_comments_for_old_posts' ) ) 
     2012        if ( empty( $posts ) || ! get_option( 'close_comments_for_old_posts' ) ) 
    20132013                return $posts; 
    20142014 
    20152015        $post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) ); 
     
    20202020        if ( ! $days_old ) 
    20212021                return $posts; 
    20222022 
    2023         if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) { 
    2024                 $posts[0]->comment_status = 'closed'; 
    2025                 $posts[0]->ping_status = 'closed'; 
    2026         } 
     2023        for ( $i = 0; $i < count( $posts ); $i++ ) { 
     2024                if ( time() - strtotime( $posts[ $i ]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) { 
     2025                        $posts[ $i ]->comment_status = 'closed'; 
     2026                        $posts[ $i ]->ping_status    = 'closed'; 
     2027                } 
     2028        } 
    20272029 
    20282030        return $posts; 
    20292031} 
     
    20602062 
    20612063        return $open; 
    20622064} 
     2065 
     2066/** 
     2067 * Close comments/pings on attachments if the parent's comments are closed. Hooked to the_posts. 
     2068 * 
     2069 * @access private 
     2070 * @since 3.6.0 
     2071 * 
     2072 * @param object $posts Post data object. 
     2073 * @return object 
     2074 */ 
     2075function _close_comments_for_attachments( $posts ) { 
     2076 
     2077        foreach ( (array) $posts as $key => $post ) { 
     2078                if ( 'attachment' != $post->post_type || 0 == $post->post_parent || $post->post_parent == $post->ID ) 
     2079                        continue; 
     2080 
     2081                $parent = get_post($post->post_parent); 
     2082                $posts[ $key ]->comment_status = $parent->comment_status; 
     2083                $posts[ $key ]->ping_status = $parent->ping_status; 
     2084        } 
     2085 
     2086        return $posts; 
     2087} 
     2088 
     2089/** 
     2090 * Close comments/pings on attachment if parents comments/pings are closed.  Hooked to comments_open and pings_open. 
     2091 * 
     2092 * @access private 
     2093 * @since 3.6.0 
     2094 * 
     2095 * @param bool $open Comments open or closed 
     2096 * @param int $post_id Post ID 
     2097 * @return bool $open 
     2098 */ 
     2099function _close_comments_for_attachment( $open, $post_id) { 
     2100        if ( ! $open ) 
     2101                return $open; 
     2102 
     2103        $post = get_post( $post_id ); 
     2104 
     2105        if ( 'attachment' != $post->post_type || 0 == $post->post_parent ) 
     2106                return $open; 
     2107 
     2108        $parent = get_post( $post->post_parent ); 
     2109 
     2110        if ( ! $parent ) 
     2111                return $open; 
     2112 
     2113        if ( 'comments_open' == current_filter() ) 
     2114                $open = ( 'open' == $parent->comment_status ); 
     2115        else //pings 
     2116                $open = ( 'open' == $parent->ping_status ); 
     2117 
     2118        return $open; 
     2119} 
     2120 No newline at end of file 
  • wp-includes/default-filters.php

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