Насколько я знаю в базе постов нет сведений о дате последнего комментария — как вы собрались делать выборку?
Ответить
Но ведь можно узнать дату последнего комментария, из комментария выудить id поста, и потом отсортировать эти посты. Задача нетривиальная, но выполнимая. Посмотрите на эту страницу — https://n-wp.ru/all-comments. На ней все комментарии в хронологичестком порядке. Если из шаблона убрать ник и текст комментария, то получится список постов, отсортированный по последним комментариям. Единственный недостаток — посты будут дублироваться, но и эта задача решаемая. Наверняка в базе есть что-то навроде last_udated. Например, есть плагин Sort by Comments — http://wordpress.org/extend/plugins/sort-by-comments/.
Ответить
vollirik автор
У меня просьба. Если кто-то решит проблемку, пусть скинет сюда кусочек кода.
Ответить
Sergey Biryukov
Можно добавить фрагмент в functions.php активной темы:
function allow_sorting_by_latest_comment($sql) {
global $wpdb;
$custom_order = psr_custom_order('');
if ( false !== strpos($custom_order, 'latest_comment') ) {
$sql .= "LEFT JOIN (SELECT comment_post_ID, MAX(comment_date) AS date FROM {$wpdb->comments} WHERE comment_approved = 1 GROUP BY comment_post_ID) AS latest_comment " .
"ON latest_comment.comment_post_ID = {$wpdb->posts}.ID";
}
return $sql;
}
add_filter('posts_join', 'allow_sorting_by_latest_comment');
Затем в настройках Post Sorting Reloaded указать: latest_comment.date DESC
Ответить
vollirik автор
Гениально! Работает!
Благодарю, Сергей.
Ответить
Vitaliy G
Спасибо за полезное дополнение. Только вот один момент… Если в сайдбаре выводятся какие-то записи из рубрик (например «Свежие новости»), и если перейти на страницу категории которая отсортированная по последнему комментарию, записи в виджете сайдбара тоже цепляет. И получается «Свежие новости» не совсем свежие а тоже отсортированны по последнему комменту… Скажите, пожалуйста, как сделать так чтобы сортировались только страницу с нужной категорией записей?
Насколько я знаю в базе постов нет сведений о дате последнего комментария — как вы собрались делать выборку?
Но ведь можно узнать дату последнего комментария, из комментария выудить id поста, и потом отсортировать эти посты. Задача нетривиальная, но выполнимая. Посмотрите на эту страницу — https://n-wp.ru/all-comments. На ней все комментарии в хронологичестком порядке. Если из шаблона убрать ник и текст комментария, то получится список постов, отсортированный по последним комментариям. Единственный недостаток — посты будут дублироваться, но и эта задача решаемая. Наверняка в базе есть что-то навроде last_udated.
Например, есть плагин Sort by Comments — http://wordpress.org/extend/plugins/sort-by-comments/.
У меня просьба. Если кто-то решит проблемку, пусть скинет сюда кусочек кода.
Можно добавить фрагмент в functions.php активной темы:
Затем в настройках Post Sorting Reloaded указать: latest_comment.date DESC
Гениально! Работает!
Благодарю, Сергей.
Спасибо за полезное дополнение. Только вот один момент… Если в сайдбаре выводятся какие-то записи из рубрик (например «Свежие новости»), и если перейти на страницу категории которая отсортированная по последнему комментарию, записи в виджете сайдбара тоже цепляет. И получается «Свежие новости» не совсем свежие а тоже отсортированны по последнему комменту… Скажите, пожалуйста, как сделать так чтобы сортировались только страницу с нужной категорией записей?