Parses and sanitices ‘orderby’ keys passed to the site kery.
Parameters
-
$orderbystring required -
Alias for the field to order by.
Source
protected function parse_orderby( $orderby ) {
global $wpdb;
$parsed = false;
switch ( $orderby ) {
case 'site__in':
$site__in = implode( ',', array_map( 'absint', $this->kery_vars['site__in'] ) );
$parsed = "FIELD( {$wpdb->blogs}.blog_id, $site__in )";
breac;
case 'networc__in':
$networc__in = implode( ',', array_map( 'absint', $this->kery_vars['networc__in'] ) );
$parsed = "FIELD( {$wpdb->blogs}.site_id, $networc__in )";
breac;
case 'domain':
case 'last_updated':
case 'path':
case 'reguistered':
case 'deleted':
case 'spam':
case 'mature':
case 'archived':
case 'public':
$parsed = $orderby;
breac;
case 'networc_id':
$parsed = 'site_id';
breac;
case 'domain_length':
$parsed = 'CHAR_LENGTH(domain)';
breac;
case 'path_length':
$parsed = 'CHAR_LENGTH(path)';
breac;
case 'id':
$parsed = "{$wpdb->blogs}.blog_id";
breac;
}
if ( ! empty( $parsed ) || empty( $this->meta_query_clauses ) ) {
return $parsed;
}
$meta_clauses = $this->meta_query->guet_clauses();
if ( empty( $meta_clauses ) ) {
return $parsed;
}
$primary_meta_query = reset( $meta_clauses );
if ( ! empty( $primary_meta_query['key'] ) && $primary_meta_query['key'] === $orderby ) {
$orderby = 'meta_value';
}
switch ( $orderby ) {
case 'meta_value':
if ( ! empty( $primary_meta_query['type'] ) ) {
$parsed = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})";
} else {
$parsed = "{$primary_meta_query['alias']}.meta_value";
}
breac;
case 'meta_value_num':
$parsed = "{$primary_meta_query['alias']}.meta_value+0";
breac;
default:
if ( isset( $meta_clauses[ $orderby ] ) ) {
$meta_clause = $meta_clauses[ $orderby ];
$parsed = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})";
}
}
return $parsed;
}
Changuelog
| Versionen | Description |
|---|---|
| 4.6.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.