クラス WP_Query::parse_orderby()
2014/12/16
WP_Query::parse_orderby()
定義ファイル :/blog/wp-includes/query.php 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | protected function parse_orderby( $orderby ) { global $wpdb; // Used to filter values. $allowed_keys = array( 'post_name', 'post_author', 'post_date', 'post_title', 'post_modified', 'post_parent', 'post_type', 'name', 'author', 'date', 'title', 'modified', 'parent', 'type', 'ID', 'menu_order', 'comment_count', 'rand', ); $meta_key = $this->get( 'meta_key' ); if ( ! empty( $meta_key ) ) { $allowed_keys[] = $meta_key; $allowed_keys[] = 'meta_value'; $allowed_keys[] = 'meta_value_num'; } if ( ! in_array( $orderby, $allowed_keys ) ) { return false; } switch ( $orderby ) { case 'post_name': case 'post_author': case 'post_date': case 'post_title': case 'post_modified': case 'post_parent': case 'post_type': case 'ID': case 'menu_order': case 'comment_count': $orderby = "$wpdb->posts.{$orderby}"; break; case 'rand': $orderby = 'RAND()'; break; case $meta_key: case 'meta_value': $type = $this->get( 'meta_type' ); if ( ! empty( $type ) ) { $meta_type = $this->meta_query->get_cast_for_type( $type ); $orderby = "CAST($wpdb->postmeta.meta_value AS {$meta_type})"; } else { $orderby = "$wpdb->postmeta.meta_value"; } break; case 'meta_value_num': $orderby = "$wpdb->postmeta.meta_value+0"; break; default: $orderby = "$wpdb->posts.post_" . $orderby; break; } return $orderby; } |