WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

WP_Site_Query::parse_orderby() protected WP 4.6.0

Parses and sanitizes 'orderby' keys passed to the site query.

{} Это метод класса: WP_Site_Query{}

Хуков нет.

Возвращает

Строку/false. Value to used in the ORDER clause. False otherwise.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->parse_orderby( $orderby );
$orderby(строка) (обязательный)
Alias for the field to order by.

Заметки

  • Global. wpdb. $wpdb WordPress database abstraction object.

Список изменений

С версии 4.6.0 Введена.

Код WP_Site_Query::parse_orderby() WP 5.5.3

<?php
protected function parse_orderby( $orderby ) {
	global $wpdb;

	$parsed = false;

	switch ( $orderby ) {
		case 'site__in':
			$site__in = implode( ',', array_map( 'absint', $this->query_vars['site__in'] ) );
			$parsed   = "FIELD( {$wpdb->blogs}.blog_id, $site__in )";
			break;
		case 'network__in':
			$network__in = implode( ',', array_map( 'absint', $this->query_vars['network__in'] ) );
			$parsed      = "FIELD( {$wpdb->blogs}.site_id, $network__in )";
			break;
		case 'domain':
		case 'last_updated':
		case 'path':
		case 'registered':
			$parsed = $orderby;
			break;
		case 'network_id':
			$parsed = 'site_id';
			break;
		case 'domain_length':
			$parsed = 'CHAR_LENGTH(domain)';
			break;
		case 'path_length':
			$parsed = 'CHAR_LENGTH(path)';
			break;
		case 'id':
			$parsed = "{$wpdb->blogs}.blog_id";
			break;
	}

	if ( ! empty( $parsed ) || empty( $this->meta_query_clauses ) ) {
		return $parsed;
	}

	$meta_clauses = $this->meta_query->get_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";
			}
			break;
		case 'meta_value_num':
			$parsed = "{$primary_meta_query['alias']}.meta_value+0";
			break;
		default:
			if ( isset( $meta_clauses[ $orderby ] ) ) {
				$meta_clause = $meta_clauses[ $orderby ];
				$parsed      = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})";
			}
	}

	return $parsed;
}