sanitize_sql_orderby

Проверяет можно ли использовать переданную строку в ORDER BY части SQL запроса.

Принимает одну или более колонок, с или без порядка сортировки (ASC/DESC). Например: column_1, column_1, column_2, column_1 ASC, column_2 DESC. Также понимает RAND().

Хуков нет.

Возвращает

Строку/false. Вернет переданную строку или false если она не подходит.

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

sanitize_sql_orderby( $orderby );
$orderby(строка) (обязательный)
Строка которую нужно проверить и вернуть, если она подходит.

Примеры

#1 Проверка ORDER BY части SQL запроса

// пример прохождения проверки
$orderby = ' col1 ASC ';
$orderby = sanitize_sql_orderby( $orderby );
var_dump( $orderby ); // string(10) " col1 ASC "

// пример ошибки
$orderby = sanitize_sql_orderby( ' col-1 ASC ' ); // bool(false)

Код из


wp-includes/formatting.php

WP 4.7.2

<?php
function sanitize_sql_orderby( $orderby ) {
	if ( preg_match( '/^s*(([a-z0-9_]+|`[a-z0-9_]+`)(s+(ASC|DESC))?s*(,s*(?=[a-z0-9_`])|$))+$/i', $orderby ) || preg_match( '/^s*RAND(s*)s*$/i', $orderby ) ) {
		return $orderby;
	}
	return false;
}