Задать вопрос
@easycode
не боюсь задавать глупые вопросы ))

Сделать массовый re-order (переворот порядка) WordPress-постов в кастомной таксономии (категориях)?

Имеется, таксономия категорий ( > 700 шт.) в них WordPress custom'ные посты ( > 15 000 шт.)

К сожалению, посты в большей части категорий были созданы в неправильном порядке (как говорится: "кверху ногами") и теперь надо их в этих выбранных категориях перевернуть - сделать такой массовый re-order (переворот) и естественно программным способом

Готовых плагинов для этого не нашёл - все плагины re-order'ы ручные, а когда 15 тыс. не вариант.

Что порекомендуете? Может кто-то решал такую задачу?
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ну, если вам нужна сортировка "вручную", то и делать ее придется вручную :)
На самом деле можно сжульничать и частично автоматизировать или изменить программно, потом ручками пофиксить только то, что требует внимания.

Для начала нужно понять как в WP делается подобная "ручная" сортировка. По умолчанию WP сортирует по дате создания, от свежих к старым. Теоретически, можно выбрать все записи составив произвольный запрос с нужной сортировкой, пройтись циклом по ним и изменить даты. Часто для произвольных типов записей дата сама по себе бессмысленна (данные не имеют возраста, как посты например) и нет ничего плохого в том, чтобы ее поменять.

Второй вариант - использовать сортировку по menu_order ('orderby' => 'menu_order'). По умолчанию значение равно 0, можно точно так же выполнить WP_Query с нужными параметрами сортировки для текущих записей, потом пройтись по полученным записям циклом и установить нужный menu_order. Именно это значение используют плагины для drag-n-drop сортировки записей в админке.

Ну и да, можно просто использовать нужную сортировку только в тех местах где надо - если это глобальный WP_Query, то через хук pre_get_posts, изолируя нужные условия, если это вторичный цикл - тогда просто через параметр order_by.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы