Сортировка категорий в WordPress

Не знаю как вам, у каждого свои потребности и вкусы, но мне приятней когда мои категории, рубрики, называйте как удобней, отсортированы по названию, а не как попало. Суть проблемы в том, что иногда толи база данных как-то не так хранит данные в кодировке UTF-8, толи ещё что, но сортировка по получается кривая. Вот и сегодня после обновления WordPress (кстати, советую почитать, если у вас баг с popup комментариями), я вспомнил об этом.

Чтобы не забыть запишу здесь, а может и вам пригодится. В общем, если у вас те же симптомы попробуйте. Открываем файл wp-includes/template-functions-category.php и ищем function list_cats. Там есть SQL запрос к базе данных:

$query = "SELECT cat_ID, cat_name, category_nicename, category_description, category_parent, category_count FROM $wpdb->categories WHERE cat_ID > 0 $exclusions ORDER BY $sort_column $sort_order";

Так вот, сортировка идёт по переменной $sort_column. Уж не помню где, но какой то имхо добрый человек, помог решить схожую проблему используя CONVERT вначале в binary потом в utf8, получается нечто вроде:

CONVERT(CONVERT($sort_column USING binary) USING utf8)

Вспомнились слова из мультфильма «Тайна третьей планеты«, помните там робот говорит: «он прилетел к нам со сломанным крылом, пришлось заменить его протезом» – вот и у меня без этого не обошлось. На этом причёсывание думаю ещё не заканчивается. Что-то меня коробит от моего «календаря». Придётся снова лезть в бекап блога и смотреть как я там делал :)

Для WordPress 2.1: новую версию хорошо переработали, хотя толку от этого только в блошей, вроде как, защищённости и работоспособности, количество запросов в том же плачевном состоянии. Но не будем о плохом, а поговорим о том, что неработает.

И так, как я понял, проблема с сортировкой русскоязычных рубрик остаётся, инструкция в целом остаётся той же, меняются только файлы. Итак, файл: wp-include/category.php — там ищем: function &get_categories($args = '') — в ней нас интересует вот такая строка:

$categories = $wpdb->get_results("SELECT * FROM $wpdb->categories WHERE $where ORDER BY $orderby $order $number");

Как можно догадаться: $orderby — меняем на: CONVERT(CONVERT($orderby USING binary) USING utf8) — честно говоря, ещё не пробовал, так как лень переползать на новую версию, но если что пищите в комментарии. Надеюсь я ответил на твой вопрос – fromdb?