Всем привет. Вы замечали что WordPress некорректно сортирует стандартные заголовки записей если там есть цифры ? То есть если у вас есть к примеру 30 записей с именем “Post 1” — “Post 30”, то он их отсортирует вот так:
Post 1
Post 10
Post 11
Post 12
…
Post 19
Post 2
Post 20
Post 21
…
Post 29
Post 3
Post 30
Что согласитесь неправильно и неудобно.
Для того чтобы сортировка была правильной, добавьте в function.php вашей темы следующий код.
add_filter('posts_orderby', 'custom_posts_orderby');
function custom_posts_orderby($orderby_statement) {
global $wpdb;
return "LENGTH({$wpdb->posts}.post_title), {$wpdb->posts}.post_title ASC";
}
На просторах интернета можно было найти вот такой код
add_filter('posts_orderby', 'custom_posts_orderby');
function custom_posts_orderby($orderby_statement) {
global $wpdb;
return $wpdb->posts . '.post_title+0 ASC';
}
но он не совсем правильно работает, то есть он начинает сортировать не с первой записи, поэтому я его немного видоизменил.