Плагин Post Sorting Reloaded. Как добавить возможно сортировки записей по последнему комментарию?

Отличный плагин, но этой функции в нем очень не хватает.

vollirik
Оцените автора
Добавить комментарий

  1. Astramak

    Насколько я знаю в базе постов нет сведений о дате последнего комментария — как вы собрались делать выборку?

    Ответить
    1. Но ведь можно узнать дату последнего комментария, из комментария выудить id поста, и потом отсортировать эти посты. Задача нетривиальная, но выполнимая. Посмотрите на эту страницу — https://n-wp.ru/all-comments. На ней все комментарии в хронологичестком порядке. Если из шаблона убрать ник и текст комментария, то получится список постов, отсортированный по последним комментариям. Единственный недостаток — посты будут дублироваться, но и эта задача решаемая. Наверняка в базе есть что-то навроде last_udated.
      Например, есть плагин Sort by Comments — http://wordpress.org/extend/plugins/sort-by-comments/.

      Ответить
  2. vollirik автор

    У меня просьба. Если кто-то решит проблемку, пусть скинет сюда кусочек кода.

    Ответить
    1. 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

      Ответить
      1. vollirik автор

        Гениально! Работает!

        Благодарю, Сергей.

        Ответить
      2. Vitaliy G

        Спасибо за полезное дополнение. Только вот один момент… Если в сайдбаре выводятся какие-то записи из рубрик (например «Свежие новости»), и если перейти на страницу категории которая отсортированная по последнему комментарию, записи в виджете сайдбара тоже цепляет. И получается «Свежие новости» не совсем свежие а тоже отсортированны по последнему комменту… Скажите, пожалуйста, как сделать так чтобы сортировались только страницу с нужной категорией записей?

        Ответить