Intereting Posts
Перечислите таксономический термин «Фамилия» + «Имя» (поле таксономии) в почтовом цикле Разрешить пользователям создавать свои собственные страницы Отправить и вставить Vine (в WP Post) на Facebook Как удалить все экземпляры эскизов, отображаемых в моей теме? Сообщения 2 Сообщения: Отображать пользовательские типы, связанные с одним и тем же другим настраиваемым типом, но с другим подключением Правило Single Redirection для ссылок на страницы и архивы Как удалить поля поиска в Twentytwelve Неверная категория с хорошим именем отображается на странице архива как вставить HTML-форму в всплывающее окно javascript? Как отладить wp_ajax_ * hook callback? Как сменить портфолио Пулеметы / постоянные ссылки Шорт-код видео за пределами WordPress, не работающий с IE и Flash-флэш-памятью mediaelement Шаблон для всех категорий настраиваемого типа сообщений? Варианты лицензирования для плагинов WordPress Сортировка сообщений на основе метазначения с использованием AJAX

Как передать параметры orderby в $ wpdb-> prepare ()?

При передаче значений типа «ASC» или «DESC» для подготовки:

[...] $order = 'DESC'; [... (the whole query)], $order); // (as a prepare param) 

он не работает, потому что полученный запрос от чего-то вроде:

 [...] group_concat(p.id ORDER BY p.post_date %s) 

Будет:

 [...] group_concat(p.id ORDER BY p.post_date 'DESC') 

Хотя это должно быть:

 [...] group_concat(p.id ORDER BY p.post_date DESC) 

Как решить?

Вам не нужно использовать $wpdb->prepare() для предложений ORDER BY . $wpdb->prepare() всегда будет указывать ваши переменные.

Предположим, что вы получили заказ в запросе, вы можете предотвратить SQL-инъекцию, не используя введенное пользователем значение вообще:

 $sql = "SELECT...."; if ( 'asc' == $_GET['order'] ) { $sql .= ' ORDER BY p.post_date ASC'; } else { $sql .= ' ORDER BY p.post_date DESC'; } $wpdb->prepare( $sql , $value_parameter );