Topic: Как правильно делать SQL запросы к базе данных WordPress
Вывод случайных записей на сайте WordPress является очень полезным ходом, так как это позволяет не только создать внутреннюю перелиновку, что хорошо с точки зрения оптимизация для выдачи в поисковых системах, но и помогает показать пользователям записи, которые были опубликовано достаточно давно и возможно уже оказались незаслуженно забытыми. А именно как раз эти записи могут оказаться очень полезными для некоторых, поэтому периодически поднимать их из архива очень необходимо.
Поскольку нам нужно вывести именно случайные записи в нужном месте, то как никак лучше подойдет такая функция WordPress, как query_posts. Она позволяет выводить записи согласно заданным критериям, например только из определенной категории или вообще только определенные записи. Теперь расскажу немножко подробнее об этой функции и приведу несколько примеров, чтобы вы имели о ней представление. Для обычного вывода записей в WordPress используют цикл, так называемый “The Loop”. Обычно он выглядит вот так:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_posts(); ?>
//Ваш код
<?php endwile; ?>
Если перед этим циклом поставить функцию query_post с нужными нам параметрами, то можно добиться вывода записей в случайном порядке. Приведу первый пример:
<?php query_posts('cat=-1,-2,-3'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_posts(); ?>
//Ваш код
<?php endwile; ?>
Такой код выведет записи из всех категорий, кроме категорий с ID 1, 2 и 3.
Теперь, когда вам понятно что делает эта функция и принцип задания параметров, приведу остальные виды параметров для query_posts:
query_posts(‘cat=-3′) – Не показывать категорию с id=3;
query_posts(‘cat=-1,-2,-3′) – Не показывать категории с id, равным 1, 2 и 3;
query_posts(‘cat=1,5,9′) – Вывести категории с id, равным 1, 5 и 9;
query_posts(‘category_name=Статьи’) – Вывести категорию с названием “Статьи”;
query_posts(‘name=Возможности WordPress’) – Вывести запись с названием “Возможности WordPress”;
query_posts(‘p=12′) – Вывести одну запись, id которой равно 12;
query_posts(‘pageid=8′) – Вывести одну страницу, id которой равно 8;
query_posts(‘pagename=Об авторе’) – Вывести страницу, название которой “Об авторе”;
query_posts(‘cat=3&showposts=5′) – Вывести 5 записей из категории, id которой равно 3;
query_posts(‘cat=3&orderby=date&order=ASC’) – Вывести записи из категории, id которой равен 3 по дате в хронологическом порядке, т.е выше будут распологаться записи, которые были созданы последними. Если вам надо вывести записи в обратном порядке, то нужно применить параметр DESC;
query_posts(‘posts_per_page=10′) – Вывести на страницу 10 записей. Если задать значение ‘-1′, то будут выводиться все записи;
query_posts(‘cat=3&year=2010′) – Вывести записи из категории, id которой равен 3, за 2010 год;
query_posts(‘orderby=rand&showposts=5&cat=3′) – Вывести случайно 5 записей из категории, id которой равен 3;
query_posts(‘orderby=rand&showposts=5′) - Вывести случайно 5 записей из всех категорий;
query_posts(‘meta_key=cars&meta_value=volvo’) – Вывести список записей с произвольным полем “cars” и значением этого поля “volvo”.
Лучше не забивать кодом основные файлы шаблона, а выносить его в виде функции в файл functions.php, присваиваю ей имя, а затем в нужном мне месте прописываю только имя этой функции всего лишь одной строчкой. Приведу пример в нашем случае:
<?php
function randomPosts() {
query_posts('orderby=rand&showposts=10');
if (have_posts()) : while (have_posts()) : the_post(); ?>
<ul>
<li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
</ul>
<?php endwhile; endif;
}
?>
Всю нашу конструкцию мы вложили в функцию с именем randomPosts(), а это значит, что теперь нам достаточно всего лишь вывести имя этой функции в том месте, где это необходимо, т.е достаточно всего лишь написать:
<?php randomPosts(); ?>
Как видите, все получается чистенько и аккуратно, можете даже написать комментарий в этом месте, пояснив, вывод какой именно функции здесь осуществляется.