Ordering by `RAND()`:
The shortcode callbacks for `gallery` and `playlist` check for `'RAND' == $atts['order']`, which isn't a valid value for `order`. Remove those checks and update the docs. In `WP_Query`, if the value of `orderby` is `rand`, `order` is irrelevant and should be unset. Adds unit tests. Fixes #29629. Built from https://develop.svn.wordpress.org/trunk@29760 git-svn-id: http://core.svn.wordpress.org/trunk@29532 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
e3eaed1c78
commit
ee9d74dc05
|
@ -959,9 +959,6 @@ function gallery_shortcode( $attr ) {
|
||||||
), $attr, 'gallery' );
|
), $attr, 'gallery' );
|
||||||
|
|
||||||
$id = intval( $atts['id'] );
|
$id = intval( $atts['id'] );
|
||||||
if ( 'RAND' == $atts['order'] ) {
|
|
||||||
$atts['orderby'] = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $atts['include'] ) ) {
|
if ( ! empty( $atts['include'] ) ) {
|
||||||
$_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
|
$_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
|
||||||
|
@ -1166,7 +1163,7 @@ add_action( 'wp_playlist_scripts', 'wp_playlist_scripts' );
|
||||||
*
|
*
|
||||||
* @type string $type Type of playlist to display. Accepts 'audio' or 'video'. Default 'audio'.
|
* @type string $type Type of playlist to display. Accepts 'audio' or 'video'. Default 'audio'.
|
||||||
* @type string $order Designates ascending or descending order of items in the playlist.
|
* @type string $order Designates ascending or descending order of items in the playlist.
|
||||||
* Accepts 'ASC', 'DESC', or 'RAND'. Default 'ASC'.
|
* Accepts 'ASC', 'DESC'. Default 'ASC'.
|
||||||
* @type string $orderby Any column, or columns, to sort the playlist. If $ids are
|
* @type string $orderby Any column, or columns, to sort the playlist. If $ids are
|
||||||
* passed, this defaults to the order of the $ids array ('post__in').
|
* passed, this defaults to the order of the $ids array ('post__in').
|
||||||
* Otherwise default is 'menu_order ID'.
|
* Otherwise default is 'menu_order ID'.
|
||||||
|
@ -1243,9 +1240,6 @@ function wp_playlist_shortcode( $attr ) {
|
||||||
), $attr, 'playlist' );
|
), $attr, 'playlist' );
|
||||||
|
|
||||||
$id = intval( $atts['id'] );
|
$id = intval( $atts['id'] );
|
||||||
if ( 'RAND' == $atts['order'] ) {
|
|
||||||
$atts['orderby'] = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
$args = array(
|
$args = array(
|
||||||
'post_status' => 'inherit',
|
'post_status' => 'inherit',
|
||||||
|
|
|
@ -2795,10 +2795,11 @@ class WP_Query {
|
||||||
|
|
||||||
$where .= $search . $whichauthor . $whichmimetype;
|
$where .= $search . $whichauthor . $whichmimetype;
|
||||||
|
|
||||||
|
$rand = ( isset( $q['orderby'] ) && 'rand' === $q['orderby'] );
|
||||||
if ( ! isset( $q['order'] ) ) {
|
if ( ! isset( $q['order'] ) ) {
|
||||||
$q['order'] = 'DESC';
|
$q['order'] = $rand ? '' : 'DESC';
|
||||||
} else {
|
} else {
|
||||||
$q['order'] = $this->parse_order( $q['order'] );
|
$q['order'] = $rand ? '' : $this->parse_order( $q['order'] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Order by.
|
// Order by.
|
||||||
|
@ -2850,7 +2851,7 @@ class WP_Query {
|
||||||
|
|
||||||
if ( empty( $orderby ) ) {
|
if ( empty( $orderby ) ) {
|
||||||
$orderby = "$wpdb->posts.post_date " . $q['order'];
|
$orderby = "$wpdb->posts.post_date " . $q['order'];
|
||||||
} else {
|
} elseif ( ! empty( $q['order'] ) ) {
|
||||||
$orderby .= " {$q['order']}";
|
$orderby .= " {$q['order']}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue