Поддержка Проблемы и решения Соритровка постов в категориях по алфавиту

  • Задача: отсортировать вывод постов по алфавиту в категориях. Как применить простую сортировку постов уже известно. Кодом ниже. Но, проблема в том, что такая сортировка подходит для текста, но не для чисел! Например, если применить такую стандартную сортировку, то заголовки с числами будут выглядеть вот так:

    Упражнение 117
    Упражнение 118
    Упражнение 119
    Упражнение 12
    Упражнение 121
    Упражнение 122

    Как видно, упражнение под номером 12 оказалось ошибочно сразу после 119, хотя должно быть выше всех. Все потому, что в сортировке сравнились только первые два числа, а потом только остальные. В php есть как раз функция другой, такой как мне нужно сортировки. Она называется natsort. С ней 12-е упражнение оказлось бы в самом верху. Вот только как применить ее к Вордпрессу?

    function wpsf_orderby($query) {
        if ( is_tag() ) {
            remove_action( 'pre_get_posts', __FUNCTION__ );
            add_filter( 'posts_orderby', function() { return ' post_title ASC'; } );
        }
    }
    add_action( 'pre_get_posts', 'wpsf_orderby' );
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Юрий

    (@yube)

    Вот только как применить ее к Вордпрессу?

    WP не сортирует записи, а только формирует ORDER BY для mysql-запроса. Гуглите что-то типа ‘natural sort mysql’. А сортировка через php влечет за собой чтение всех записей для сортировки, и это может быть сильно нагрузочно. К тому же пагинацию придется делать вручную.

    Спасибо! Я только что сам решил свою проблему! Сначала я на странице архивов применил get_posts для того чтобы получить список всех постов в массиве для данной метки по ее ID. Далее я вынул все нужное из массива. Потом я объединил все нужное в новый массив и к нему уже применил natsort и вывел так как мне нужно было. Конечно, стандартный вывод постов пришлось отключить на странице меток. Пагинации не будет, но она и не нужна мне. На моем сайте постов в метках точно не так много планируется, максимум где-то 100-150 на каждую метку. Поэтому такой вариант мне подошел. Конечно, если постов в метках слишком много, нужна пагинация, и нужно другое решение проблемы.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Соритровка постов в категориях по алфавиту» закрыта для новых ответов.