У меня возникла ситуация, когда я должен отсортировать сообщения по названию штата в алфавитном порядке (A-Z). Я знаю, что мы можем сделать это с помощью meta_query, но в моем случае я должен сделать это с помощью пользовательского запроса MySQL.
Я старался :-
$quotes = $wpdb->get_results("select * from wp_akph_posts LEFT JOIN wp_akph_postmeta ON wp_akph_posts.ID=wp_akph_postmeta.post_id where wp_akph_posts.post_type='quote' Order by wp_akph_postmeta.meta_value ASC");
и я получил результаты как Null сначала (meta_key), потому что он оставил соединение.
Я хочу, чтобы где-нибудь, TX был сверху не NULL или любым числом. Просто строка.
Любые предложения?
Вы можете вызвать ORDER BY
положить NULL
последний с помощью -
перед именем столбца в выписке. Если вам нужно использовать SQL вместо WP_Query
Я все еще предлагаю использовать $wpdb->prefix
и другие встроенные значения имен таблиц на случай, если вы используете это на сайте с другим префиксом.
global $wpdb;
$sql = <<<SQL
SELECT *
FROM {$wpdb->posts} p
LEFT JOIN {$wpdb->postmeta} pm ON p.ID=pm.post_id
WHERE p.post_type='quote'
ORDER BY -pm.meta_value ASC
SQL;
$quotes = $wpdb->get_results( $sql );
Эта функция MySQL плохо документирована, но вы можете найти информацию Вот а также в комментариях к документации.
Других решений пока нет …