Make WordPress Core

Changeset 31015


Ignore:
Timestamp:
12/31/2014 07:37:09 PM (10 years ago)
Author:
boonebgorges
Message:

Support array values for post-related parameters in WP_Comment_Query.

Props nprasath002, c3mdigital, ianmjones.
Fixes #20006.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/comment.php

    r30681 r31015  
    675675            $join_posts_table = true;
    676676            foreach ( $post_fields as $field_name => $field_value ) {
    677                 $where[] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} = %s", $field_value );
     677                // $field_value may be an array.
     678                $esses = array_fill( 0, count( (array) $field_value ), '%s' );
     679                $where[] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
    678680            }
    679681        }
  • trunk/tests/phpunit/tests/comment/query.php

    r30548 r31015  
    11171117        $this->assertEquals( 2, $found );
    11181118    }
     1119
     1120    public function test_post_type_single_value() {
     1121        register_post_type( 'post-type-1' );
     1122        register_post_type( 'post-type-2' );
     1123
     1124        $p1 = $this->factory->post->create( array( 'post_type' => 'post-type-1' ) );
     1125        $p2 = $this->factory->post->create( array( 'post_type' => 'post-type-2' ) );
     1126
     1127        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1128        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1129
     1130        $q = new WP_Comment_Query();
     1131        $found = $q->query( array(
     1132            'fields' => 'ids',
     1133            'post_type' => 'post-type-2',
     1134        ) );
     1135
     1136        $this->assertEqualSets( $c2, $found );
     1137
     1138        _unregister_post_type( 'post-type-1' );
     1139        _unregister_post_type( 'post-type-2' );
     1140    }
     1141
     1142    /**
     1143     * @ticket 20006
     1144     */
     1145    public function test_post_type_singleton_array() {
     1146        register_post_type( 'post-type-1' );
     1147        register_post_type( 'post-type-2' );
     1148
     1149        $p1 = $this->factory->post->create( array( 'post_type' => 'post-type-1' ) );
     1150        $p2 = $this->factory->post->create( array( 'post_type' => 'post-type-2' ) );
     1151
     1152        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1153        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1154
     1155        $q = new WP_Comment_Query();
     1156        $found = $q->query( array(
     1157            'fields' => 'ids',
     1158            'post_type' => array( 'post-type-2' ),
     1159        ) );
     1160
     1161        $this->assertEqualSets( $c2, $found );
     1162
     1163        _unregister_post_type( 'post-type-1' );
     1164        _unregister_post_type( 'post-type-2' );
     1165    }
     1166
     1167    /**
     1168     * @ticket 20006
     1169     */
     1170    public function test_post_type_array() {
     1171        register_post_type( 'post-type-1' );
     1172        register_post_type( 'post-type-2' );
     1173
     1174        $p1 = $this->factory->post->create( array( 'post_type' => 'post-type-1' ) );
     1175        $p2 = $this->factory->post->create( array( 'post_type' => 'post-type-2' ) );
     1176        $p3 = $this->factory->post->create( array( 'post_type' => 'post-type-3' ) );
     1177
     1178        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1179        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1180        $c3 = $this->factory->comment->create_post_comments( $p3, 1 );
     1181
     1182        $q = new WP_Comment_Query();
     1183        $found = $q->query( array(
     1184            'fields' => 'ids',
     1185            'post_type' => array( 'post-type-1', 'post-type-3' ),
     1186        ) );
     1187
     1188        $this->assertEqualSets( array_merge( $c1, $c3 ), $found );
     1189
     1190        _unregister_post_type( 'post-type-1' );
     1191        _unregister_post_type( 'post-type-2' );
     1192    }
     1193
     1194    public function test_post_name_single_value() {
     1195        $p1 = $this->factory->post->create( array( 'post_name' => 'foo' ) );
     1196        $p2 = $this->factory->post->create( array( 'post_name' => 'bar' ) );
     1197
     1198        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1199        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1200
     1201        $q = new WP_Comment_Query();
     1202        $found = $q->query( array(
     1203            'fields' => 'ids',
     1204            'post_name' => 'bar',
     1205        ) );
     1206
     1207        $this->assertEqualSets( $c2, $found );
     1208    }
     1209
     1210    /**
     1211     * @ticket 20006
     1212     */
     1213    public function test_post_name_singleton_array() {
     1214        $p1 = $this->factory->post->create( array( 'post_name' => 'foo' ) );
     1215        $p2 = $this->factory->post->create( array( 'post_name' => 'bar' ) );
     1216
     1217        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1218        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1219
     1220        $q = new WP_Comment_Query();
     1221        $found = $q->query( array(
     1222            'fields' => 'ids',
     1223            'post_name' => array( 'bar' ),
     1224        ) );
     1225
     1226        $this->assertEqualSets( $c2, $found );
     1227    }
     1228
     1229    /**
     1230     * @ticket 20006
     1231     */
     1232    public function test_post_name_array() {
     1233        $p1 = $this->factory->post->create( array( 'post_name' => 'foo' ) );
     1234        $p2 = $this->factory->post->create( array( 'post_name' => 'bar' ) );
     1235        $p3 = $this->factory->post->create( array( 'post_name' => 'baz' ) );
     1236
     1237        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1238        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1239        $c3 = $this->factory->comment->create_post_comments( $p3, 1 );
     1240
     1241        $q = new WP_Comment_Query();
     1242        $found = $q->query( array(
     1243            'fields' => 'ids',
     1244            'post_name' => array( 'foo', 'baz' ),
     1245        ) );
     1246
     1247        $this->assertEqualSets( array_merge( $c1, $c3 ), $found );
     1248    }
     1249
     1250    public function test_post_status_single_value() {
     1251        $p1 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
     1252        $p2 = $this->factory->post->create( array( 'post_status' => 'draft' ) );
     1253
     1254        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1255        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1256
     1257        $q = new WP_Comment_Query();
     1258        $found = $q->query( array(
     1259            'fields' => 'ids',
     1260            'post_status' => 'draft',
     1261        ) );
     1262
     1263        $this->assertEqualSets( $c2, $found );
     1264    }
     1265
     1266    /**
     1267     * @ticket 20006
     1268     */
     1269    public function test_post_status_singleton_array() {
     1270        $p1 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
     1271        $p2 = $this->factory->post->create( array( 'post_status' => 'draft' ) );
     1272
     1273        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1274        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1275
     1276        $q = new WP_Comment_Query();
     1277        $found = $q->query( array(
     1278            'fields' => 'ids',
     1279            'post_status' => array( 'draft' ),
     1280        ) );
     1281
     1282        $this->assertEqualSets( $c2, $found );
     1283    }
     1284
     1285    /**
     1286     * @ticket 20006
     1287     */
     1288    public function test_post_status_array() {
     1289        $p1 = $this->factory->post->create( array( 'post_status' => 'publish' ) );
     1290        $p2 = $this->factory->post->create( array( 'post_status' => 'draft' ) );
     1291        $p3 = $this->factory->post->create( array( 'post_status' => 'future' ) );
     1292
     1293        $c1 = $this->factory->comment->create_post_comments( $p1, 1 );
     1294        $c2 = $this->factory->comment->create_post_comments( $p2, 1 );
     1295        $c3 = $this->factory->comment->create_post_comments( $p3, 1 );
     1296
     1297        $q = new WP_Comment_Query();
     1298        $found = $q->query( array(
     1299            'fields' => 'ids',
     1300            'post_status' => array( 'publish', 'future' ),
     1301        ) );
     1302
     1303        $this->assertEqualSets( array_merge( $c1, $c3 ), $found );
     1304    }
    11191305}
Note: See TracChangeset for help on using the changeset viewer.