WordPress.org

Make WordPress Core

Ticket #29424: 29424.2.diff

File 29424.2.diff, 2.1 KB (added by jesin, 4 years ago)

Patch 29424.diff with unit tests

  • src/wp-includes/query.php

     
    28182818                        $orderby = "FIELD( {$wpdb->posts}.post_parent, $post_parent__in )";
    28192819                } else {
    28202820                        $orderby_array = array();
     2821                        $parsed_array = array();
    28212822                        if ( is_array( $q['orderby'] ) ) {
    28222823                                foreach ( $q['orderby'] as $_orderby => $order ) {
    28232824                                        $orderby = addslashes_gpc( urldecode( $_orderby ) );
     
    28272828                                                continue;
    28282829                                        }
    28292830
     2831                                        if ( in_array( $parsed, $parsed_array ) ) {
     2832                                                continue;
     2833                                        }
     2834
    28302835                                        $orderby_array[] = $parsed . ' ' . $this->parse_order( $order );
     2836                                        $parsed_array[] = $parsed;
    28312837                                }
    28322838                                $orderby = implode( ', ', $orderby_array );
    28332839
     
    28422848                                                continue;
    28432849                                        }
    28442850
     2851                                        if ( in_array( $parsed, $orderby_array ) ) {
     2852                                                continue;
     2853                                        }
     2854
    28452855                                        $orderby_array[] = $parsed;
    28462856                                }
    28472857                                $orderby = implode( ' ' . $q['order'] . ', ', $orderby_array );
  • tests/phpunit/tests/post/query.php

     
    795795                        "ORDER BY $wpdb->posts.post_date DESC",
    796796                        $q4->request
    797797                );
     798
     799                $q5 = new WP_Query( array(
     800                        'orderby' => array(
     801                                'title' => 'DESC',
     802                                'post_title' => 'ASC'
     803                        )
     804                ) );
     805                $this->assertContains( "ORDER BY $wpdb->posts.post_title DESC", $q5->request );
     806                $this->assertNotContains(
     807                        "ORDER BY $wpdb->posts.post_title DESC, $wpdb->posts.post_title ASC",
     808                        $q5->request
     809                );
    798810        }
    799811
    800812        /**
     
    830842                        "ORDER BY $wpdb->posts.post_date ASC",
    831843                        $q3->request
    832844                );
     845
     846                $q4 = new WP_Query( array(
     847                        'orderby' => 'title post_title',
     848                ) );
     849                $this->assertContains(
     850                        "ORDER BY $wpdb->posts.post_title DESC",
     851                        $q4->request
     852                );
     853                $this->assertNotContains(
     854                        "ORDER BY $wpdb->posts.post_title DESC, $wpdb->posts.post_title DESC",
     855                        $q4->request
     856                );
    833857        }
    834 }
    835  No newline at end of file
     858}