Как вывести самые комментируемые посты

Как вывести самые комментируемые посты | n-wp.ru

Я уже приводил код, который выводит список самых комментируемых постов с картинками. Однако не всем такой код подходит, так как сайдбар обычно небольшой, и слишком много картинок в нем не смотрятся. Поэтому иногда разумнее бывает вывести простой список всех постов с максимальным количеством комментариев.

tiaurus-2010-01-27_205943

Для вывода используйте код, вставив его в сайдбар:

get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $topten) {
$postid = $topten->ID;
$title = $topten->post_title;
$commentcount = $topten->comment_count;
if ($commentcount != 0) { ?>
  • <a href="" title="">
  • В этом коде LIMIT 0 , 10 — диапазон отображаемого количества постов (от 0 до 10), который вы можете изменять.

    Однако я подсмотрел еще один более гибкий способ вывода самых комментируемых постов. Он основан на том, что сама функция формирования описывается в functions.php, а там, где нам надо, нужно будет вставить только одну строчку с вызовом этой функции. Открываем functions.php записываем туда такие строчки:

    function most_popular_posts($no_posts = 5, $before = '
  • ', $after = '
  • ', $show_pass_post = false, $duration='') { global $wpdb; $request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments"; $request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'"; if(!$show_pass_post) $request .= " AND post_password =''"; if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts"; $posts = $wpdb->get_results($request); $output = ''; if ($posts) { foreach ($posts as $post) { $post_title = stripslashes($post->post_title); $comment_count = $post->comment_count; $permalink = get_permalink($post->ID); $output .= $before . '' . $post_title . ' (' . $comment_count.')' . $after; } } else { $output .= $before . "Ничего не найдено" . $after; } echo $output; }

    После этого выводим список, записав одну строчку в то место, где нужен вывод. Обычно это sidebar.php.

    
    

    В этом коде за количество выводимых публикаций отвечает $no_posts = 5. Замечу, что список отображается с количеством комментариев в каждом посте.

    Автор tiaurus 2182 Articles
    Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

    7 Комментарии

    1. Вернее оно в одной строчке только в случае, если название темы длиной в одну строчку. Если больше – то прыгает на следующую, даже если в последней строке названия темы есть место

      • У Вас в стилях стоит же max-width: 250px, потому и прыгает. Класс называется “widgetcontainer clearfix”.

        Сам код и так далее.

    Оставить комментарий

    Ваш электронный адрес не будет опубликован.


    *