Я пытаюсь отсортировать список, сгенерированный WordPress, но немного более индивидуально.
global $wpdb;
$orderby = " SUBSTRING_INDEX( {$wpdb->posts}.post_title, ' ', -1 ) ASC"
В WordPress то, что он делает, возвращает этот SQL-оператор в функцию сортировки.Это работает для сортировки по последнему слову в названии поста (фамилия в моем случае), но если 2 человека имеют одинаковую фамилию, я бы хотел, чтобы она также сортировала по имени.
Итакмне нужна строка sql, которая будет сортировать по фамилии, а затем по имени.
К сожалению, все они хранятся в одном столбце (post_title), и я не могу это изменить.
Я думаю, что могу каким-то образом отсортировать столбец сначала по имени, а затем по фамилиино я не в состоянии понять это.Есть ли способ сделать это?
Jill Doodles
Brian Doodle
Billy Graham
Ryan Toon
Zedna Toon
James Zebra
Adam Zebra
David Zebra
Billy Zebra
Но я бы хотел, чтобы это было отсортировано так:
Brian Doodles
Jill Doodles
Billy Graham
Ryan Toon
Zedna Toon
Adam Zebra
Billy Zebra
David Zebra
James Zebra
PER @JoakimDanielson, я попробовал это:
$orderby = " SUBSTR({$wpdb->posts}.post_title, 1, LOCATE(' ', {$wpdb->posts}.post_title) - 1), SUBSTR({$wpdb->posts}.post_title, LOCATE(' ', {$wpdb->posts}.post_title) + 1) ";
Но сортируется только по имени.
- Адам Зебра
- Билли Грэм
- Билли Зебра
- Брайан Дудлс
- Дэвид Зебра
- Джеймс Зебра
- Джилл Дудлс
- Райан Тун
- Зедна Тун
, но обращает свой код кэто сделало мир лучше:
$orderby = " SUBSTR({$wpdb->posts}.post_title, LOCATE(' ', {$wpdb->posts}.post_title) + 1) ASC, SUBSTR({$wpdb->posts}.post_title, 1, LOCATE(' ', {$wpdb->posts}.post_title) - 1) ASC ";