Changeset 34569
- Timestamp:
- 09/26/2015 02:24:17 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-comment.php
r34561 r34569 228 228 * @access public 229 229 * 230 * @param string $format Return value format. 'tree' for a hierarchical tree, 'flat' for a flattened array. 231 * Default 'tree'. 230 * @param array $args { 231 * Array of arguments used to pass to get_comments() and determine format. 232 * 233 * @type string $format Return value format. 'tree' for a hierarchical tree, 'flat' for a flattened array. 234 * Default 'tree'. 235 * @type string $status Comment status to limit results by. Accepts 'hold' (`comment_status=0`), 236 * 'approve' (`comment_status=1`), 'all', or a custom comment status. 237 * Default 'all'. 238 * @type string $hierarchical Whether to include comment descendants in the results. 239 * 'threaded' returns a tree, with each comment's children 240 * stored in a `children` property on the `WP_Comment` object. 241 * 'flat' returns a flat array of found comments plus their children. 242 * Pass `false` to leave out descendants. 243 * The parameter is ignored (forced to `false`) when `$fields` is 'ids' or 'counts'. 244 * Accepts 'threaded', 'flat', or false. Default: 'threaded'. 245 * @type string|array $orderby Comment status or array of statuses. To use 'meta_value' 246 * or 'meta_value_num', `$meta_key` must also be defined. 247 * To sort by a specific `$meta_query` clause, use that 248 * clause's array key. Accepts 'comment_agent', 249 * 'comment_approved', 'comment_author', 250 * 'comment_author_email', 'comment_author_IP', 251 * 'comment_author_url', 'comment_content', 'comment_date', 252 * 'comment_date_gmt', 'comment_ID', 'comment_karma', 253 * 'comment_parent', 'comment_post_ID', 'comment_type', 254 * 'user_id', 'comment__in', 'meta_value', 'meta_value_num', 255 * the value of $meta_key, and the array keys of 256 * `$meta_query`. Also accepts false, an empty array, or 257 * 'none' to disable `ORDER BY` clause. 258 * } 232 259 * @return array Array of `WP_Comment` objects. 233 260 */ 234 public function get_children( $format = 'tree' ) { 261 public function get_children( $args = array() ) { 262 $defaults = array( 263 'format' => 'tree', 264 'status' => 'all', 265 'hierarchical' => 'threaded', 266 'orderby' => '', 267 ); 268 269 $_args = wp_parse_args( $args, $defaults ); 270 $_args['parent'] = $this->comment_ID; 271 235 272 if ( is_null( $this->children ) ) { 236 $this->children = get_comments( array( 237 'parent' => $this->comment_ID, 238 'hierarchical' => 'threaded', 239 ) ); 240 } 241 242 if ( 'flat' === $format ) { 273 $this->children = get_comments( $_args ); 274 } 275 276 if ( 'flat' === $_args['format'] ) { 243 277 $children = array(); 244 278 foreach ( $this->children as $child ) { 245 $children = array_merge( $children, array( $child ), $child->get_children( 'flat' ) ); 279 $child_args = $_args; 280 $child_args['format'] = 'flat'; 281 // get_children() resets this value automatically. 282 unset( $child_args['parent'] ); 283 284 $children = array_merge( $children, array( $child ), $child->get_children( $child_args ) ); 246 285 } 247 286 } else { -
trunk/src/wp-includes/comment-template.php
r34561 r34569 1308 1308 $comments_flat = array(); 1309 1309 foreach ( $_comments as $_comment ) { 1310 $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( 'flat' ) ); 1310 $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( array( 1311 'format' => 'flat', 1312 'status' => $comment_args['status'], 1313 'orderby' => $comment_args['orderby'] 1314 ) ) ); 1311 1315 } 1312 1316 -
trunk/tests/phpunit/tests/comment/query.php
r34550 r34569 2024 2024 ) ); 2025 2025 2026 $q = new WP_Comment_Query( array( 2027 'post_id' => $this->post_id, 2026 $args = array( 2028 2027 'hierarchical' => 'threaded', 2029 2028 'orderby' => 'comment_ID', 2030 2029 'order' => 'ASC', 2031 ) ); 2030 ); 2031 2032 $query_args = array_merge( $args, array( 2033 'post_id' => $this->post_id, 2034 ) ); 2035 2036 $q = new WP_Comment_Query( $query_args ); 2032 2037 2033 2038 // Top-level comments. … … 2035 2040 2036 2041 // Direct descendants of $c1. 2037 $this->assertEqualSets( array( $c2, $c4 ), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_children( ), 'comment_ID' ) ) );2042 $this->assertEqualSets( array( $c2, $c4 ), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_children( $args ), 'comment_ID' ) ) ); 2038 2043 2039 2044 // Direct descendants of $c2. 2040 $this->assertEqualSets( array( $c3 ), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_child( $c2 )->get_children( ), 'comment_ID' ) ) );2045 $this->assertEqualSets( array( $c3 ), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_child( $c2 )->get_children( $args ), 'comment_ID' ) ) ); 2041 2046 2042 2047 // Direct descendants of $c5. 2043 $this->assertEqualSets( array( $c6 ), array_values( wp_list_pluck( $q->comments[ $c5 ]->get_children(), 'comment_ID' ) ) ); 2048 $this->assertEqualSets( array( $c6 ), array_values( wp_list_pluck( $q->comments[ $c5 ]->get_children( $args ), 'comment_ID' ) ) ); 2049 } 2050 2051 /** 2052 * @ticket 8071 2053 */ 2054 public function test_hierarchical_threaded_approved() { 2055 $c1 = $this->factory->comment->create( array( 2056 'comment_post_ID' => $this->post_id, 2057 'comment_approved' => '1', 2058 ) ); 2059 2060 $c2 = $this->factory->comment->create( array( 2061 'comment_post_ID' => $this->post_id, 2062 'comment_approved' => '1', 2063 'comment_parent' => $c1, 2064 ) ); 2065 2066 $c3 = $this->factory->comment->create( array( 2067 'comment_post_ID' => $this->post_id, 2068 'comment_approved' => '0', 2069 'comment_parent' => $c2, 2070 ) ); 2071 2072 $c4 = $this->factory->comment->create( array( 2073 'comment_post_ID' => $this->post_id, 2074 'comment_approved' => '1', 2075 'comment_parent' => $c1, 2076 ) ); 2077 2078 $c5 = $this->factory->comment->create( array( 2079 'comment_post_ID' => $this->post_id, 2080 'comment_approved' => '1', 2081 ) ); 2082 2083 $this->factory->comment->create( array( 2084 'comment_post_ID' => $this->post_id, 2085 'comment_approved' => '1', 2086 'comment_parent' => $c5, 2087 ) ); 2088 2089 $args = array( 2090 'hierarchical' => 'threaded', 2091 'status' => 'approve', 2092 'orderby' => 'comment_ID', 2093 'order' => 'ASC', 2094 ); 2095 2096 $query_args = array_merge( $args, array( 2097 'post_id' => $this->post_id, 2098 ) ); 2099 2100 $q = new WP_Comment_Query( $query_args ); 2101 2102 // Top-level comments. 2103 $this->assertEqualSets( array( $c1, $c5 ), array_values( wp_list_pluck( $q->comments, 'comment_ID' ) ) ); 2104 2105 // Direct descendants of $c1. 2106 $this->assertEqualSets( array( $c2, $c4 ), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_children( $args ), 'comment_ID' ) ) ); 2107 2108 // Direct descendants of $c2. 2109 $this->assertEqualSets( array(), array_values( wp_list_pluck( $q->comments[ $c1 ]->get_child( $c2 )->get_children( $args ), 'comment_ID' ) ) ); 2044 2110 } 2045 2111 }
Note: See TracChangeset
for help on using the changeset viewer.