Вывод самых последних и самых комментируемых записей в WordPress
С ростом количества записей в блоге возникает желание дополнительно отображать на главной странице интересные посты. Критериев интересности немало, это может быть количество просмотров пользователями, количество оставленных комментариев, субъективная оценка автора. Такие блоки с постами служат элементом навигации, помогают удержать пользователя на сайте, и дополнительно перелинковывают записи.
Сегодня рассмотрим как в WordPress с помощью sql-запросов реализовать:
- Вывод самых комментируемых постов
- Вывод самых последних постов
- Вывод самых последних комментируемых постов
Вывод самых комментируемых постов. Для этого необходимо разместить в сайдбаре (sidebar.php) следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <ul id="most-commented"> <?php //mc - most commented $most_commented_posts = $wpdb->get_results(" SELECT `comment_count`,`ID`,`post_title` FROM $wpdb->posts WHERE `comment_count` > 0 AND `post_type`= 'post' AND `post_status` = 'publish' ORDER BY `comment_count` DESC LIMIT 10"); foreach ($most_commented_posts as $mc_post) { if ($mc_post->comment_count != 0) { ?> <li> <a href="<?php echo get_permalink($mc_post->ID); ?>" title="<?php echo $mc_post->post_title ?>"> <?php echo $mc_post->post_title ?> </a> (<?php echo $mc_post->comment_count ?>) </li> <?php } } ?> </ul> |
Возможно понадобится отображать последние добавленные записи (посты), для этого код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <ul id="latest"> <?php //l - latest $latest_posts = $wpdb->get_results(" SELECT `comment_count`,`ID`,`post_title` FROM $wpdb->posts WHERE `post_type`= 'post' AND `post_status` = 'publish' ORDER BY `post_date` DESC LIMIT 10"); foreach ($latest_posts as $l_post) { if ($l_post->comment_count != 0) { ?> <li> <a href="<?php echo get_permalink($l_post->ID); ?>" title="<?php echo $l_post->post_title ?>"> <?php echo $l_post->post_title ?> </a> (<?php echo $l_post->comment_count ?>) </li> <?php } } ?> </ul> |
Если вдруг нужно отобразить свежедобавленные записи с максимальным количеством комментов (сортировка по дате И количеству комментариев). По-сути объединение двух предыдущих запросов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <ul id="latest-most-commented"> <?php //mc - most commented, l - latest $latest_most_commented = $wpdb->get_results(" SELECT `comment_count`,`ID`,`post_title` FROM $wpdb->posts WHERE `comment_count` > 0 AND `post_type`= 'post' AND `post_status` = 'publish' ORDER BY `comment_count` DESC, `post_date` DESC LIMIT 10"); foreach ($latest_most_commented as $l_mc_post) { if ($l_mc_post->comment_count != 0) { ?> <li> <a href="<?php echo get_permalink($l_mc_post->ID); ?>" title="<?php echo $l_mc_post->post_title ?>"> <?php echo $l_mc_post->post_title ?> </a> (<?php echo $l_mc_post->comment_count ?>) </li> <?php } } ?> </ul> |
Во всех трех запросах отображается десять записей, если требуется иное количество, найдите строчку с sql-запросом и отредактируйте значение (см. LIMIT 10)