Статьи

Совет: SQL-запрос «Популярные сообщения по количеству комментариев» в WordPress

Возможно, вы заметили, что на сайтах Tuts + есть раздел на главной странице, где мы перечисляем самые популярные посты месяца в соответствии с количеством комментариев. Хотя существует множество доступных плагинов, всегда лучше написать код самостоятельно, если вы можете. Слишком много абстракций никогда не бывает хорошим! К счастью, как только мы узнаем, как запрашивать базу данных WordPress, такие задачи становятся сложными!

Предпочитаете смотреть это видео на Screenr ?


Для запроса базы данных WordPress мы можем использовать метод $ wpdb-> get_results () . В качестве параметра мы просто передаем SQL-запрос. В этом конкретном примере, скажем, мы хотим отображать только список популярных сообщений в нашей боковой панели. Мы можем использовать следующий запрос:

1
$pop = $wpdb->get_results(«SELECT id, post_title, comment_count FROM {$wpdb->prefix}posts WHERE post_type=’post’ ORDER BY comment_count DESC LIMIT 10»);

id, post_title и comment_count наши столбцы в базе данных.

MySQL DB

Поскольку WordPress позволяет вам устанавливать собственный префикс для таблиц базы данных, нам нужно извлекать этот префикс динамически, используя сообщения {wpdb-> prefix} . В этом случае это приводит к «wp_posts» . Далее, мы должны убедиться, что мы отображаем только сообщения, а не что-либо еще, например, вложения или страницы Наконец, мы заказываем комментарий comment_count. В этом смысл всего этого, верно? Показать наиболее комментированные сообщения?

Теперь, когда наш SQL-запрос выполнен, мы можем просто использовать оператор foreach, чтобы отфильтровать результаты и отобразить их на странице.

1
2
3
4
5
$pop = $wpdb->get_results(«SELECT id, post_title, comment_count FROM {$wpdb->prefix}posts WHERE post_type=’post’ ORDER BY comment_count DESC LIMIT 10»);
 
foreach($pop as $post) : ?>
<li> <?php echo $post->post_title;
<?php endforeach;

Обратите внимание, что переменная $ post будет иметь доступ ко всем выбранным нами столбцам. В нашем случае у нас будет доступ к:

  • $ post-> id: идентификатор сообщения
  • $ post-> post_title: заголовок поста
  • $ post-> comment_count: количество комментариев для данного поста.

Если вам нужна постоянная ссылка, вы также можете выбрать SELECT из столбца «guid» или просто использовать метод get_permalink ($ post-> id) и передать идентификатор сообщения соответствующим образом.

Как только вы научитесь напрямую взаимодействовать с базой данных WordPress, у вас появится много возможностей; это только верхушка айсберга!


Этот учебник был создан, чтобы продемонстрировать, как конкретно запрашивать таблицы WordPress в базе данных. По правде говоря, начиная с WordPress 2.9, вы можете достичь этого точного эффекта, используя query_posts () и передавая orderby = ‘comment_count ‘. Но помните, все сводится к одному и тому же: передача SQL-запроса к базе данных.

Любые вопросы? Спасибо за просмотр или чтение!