Очень часто у меня на блоге задают похожий вопрос. Как сделать как у вас в сайдбаре популярные записи, как сделать вывод статей на главную с определенной рубрики или по тегу. Все это решается с помощью одной из самых важных функций в wordpress, а именно query. Сегодня я расскажу о этой функции, дам примеры как выводить что угодно и куда угодно в wordpress. Собственно, без этой функции не обходится не один маломальски «не блоговый» сайт на wordpress.
Собственно, сама функция описана . Служит она для того, чтобы вытягивать с базы данных нужные записи по определенным параметрам и выводить их в произвольном месте вашего сайта вне основного цикла статей. Ну, как пример, вы хотите в сайдбаре сделать вывод 5 последних статей с определенной рубрики.
Сам блок будет выглядеть приблизительно так
<?php $the_query = new WP_Query(); ?>
<?php while ($the_query->have_posts() ) : $the_query->the_post(); ?>
//Тут будет вывод самого цикла
<?php endwhile; ?>
<?php wp_reset_postdata();?>
Вот здесь new WP_Query(), в скобочках будем указывать параметры выборки. В нашем случае, нам нужно вывести 5 статей с рубрики. Допустим это будет рубрика с ярлыком best. Сам ярлык можно глянуть в Записи — Рубрики, там увидите название рубрики, а под ней ярлык. Теперь напишем параметры, первая строка блока будет выглядеть так
<?php $the_query = new WP_Query('category_name=best&showposts=5'); ?>
Мы можем выводить сразу с нескольких рубрик, тогда это будет выглядеть так
$the_query = new WP_Query( 'category_name=staff,news' );
Или наоборот, сделать так, чтобы выводились посты всех рубрик, кроме определенных, тогда нужно ставить минус перед id рубрики. Это будет выглядеть так
$the_query = new WP_Query( 'cat=-12,-34,-56' );
Обратите внимание, что при таких параметрах нужно указывать ID рубрики, а не ярлык.
Тоже самое можно проделывать и с другими параметрами, например метками.
$the_query = new WP_Query( 'tag=cooking' );
Подобный код будет выводить записи с меткой cooking. В самом кодексе полно других параметров, приведу несколько наиболее часто используемых.
$the_query = new WP_Query( 'p=7' );
Такая строка делает выборку с одного поста. 7 — это id самого поста.
$the_query = new WP_Query( 'post_parent=93' );
Делает выборку всех подстраниц страницы с ID=93
$the_query = new WP_Query( 'posts_per_page=3' );
posts_per_page — параметр, который позволяет разбивать статьи на страницы, в данном случае по 3 статьи на страницу.
Часто при пагинации таких записей могут быть проблемы. При заходе на 2, 3 и т.д. страницу получите 404 ошибку. В основном их можно избежать добавив такой параметр
$the_query = new WP_Query( 'paged=' . get_query_var( 'page' ) );
Еще один полезный параметр, случайный порядок вывода.
$the_query = new WP_Query( 'orderby=rand' );
Например, при помощи него можно выводить 3 случайных статьи с определенной рубрики, код будет выглядеть так.
$the_query = new WP_Query( 'category_name=best&showposts=3&orderby=rand' );
& — это символ, который ставится между параметрами. Т.е., как видите можно задавать сразу несколько параметров.
Еще один интересный параметр, позволяет выводить только прикрепленные записи
$the_query = new WP_Query(array ('post__in' => get_option('sticky_posts')) );
На этом с параметрами остановимся. Разберем подробней самый первый пример, в котором нужно было вывести 5 последних статей с определенной рубрики. Напомню, сами параметры мы передадим так
$the_query = new WP_Query('category_name=best&showposts=5');
Но этими параметрами мы просто передаем команду движку выбрать нужные записи с базы данных. Теперь нам нужно создать цикл и поместить в него то, что нам нужно выводить. Допустим, это будет просто список названий статей и ссылки на них. Теперь пропишем весь код целиком.
<?php $the_query = new WP_Query('category_name=best&showposts=5'); ?>
<?php while ($the_query->have_posts() ) : $the_query->the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br />
<?php endwhile; ?>
<?php wp_reset_postdata();?>
Вот и все дела. Если будут желающие, пишите в комментариях, я напишу подробно как сделал блок лучших записей у себя в сайдбаре, где еще рассмотрю как делать автоматические миниатюры, а также автоматическую генерацию анонсов на заданное кол-во символов.
Ну а если надоело сидеть сегодня за компом и делать сайты, то можно бы развлечься и сходить в клуб, потанцевать, позажигать, пообщаться с веселой компанией. А может вообще задуматься о карьере диджея? Правда, для начала нужно узнать как стать диджеем, научиться в специализированной школе, обрести опыт выступлений. И кто знает, может сейчас в вас родится новый виртуозный DJ.
Понравилась статья? - Подпишись.
Или поделись полезным с миром
Похожие статьи:
напишите как выводить, новые статьи категории, которая открыта. Я пробовал
вот так:
$the_query = new WP_Query(‘news&showposts=7’); не помогло.
пример кода:
<?php $the_query = new WP_Query(); $the_query->query(‘p=23’);
while ($the_query->have_posts()) : $the_query->the_post();
the_title();
the_content();
endwhile; ?>
<?php wp_reset_postdata();?>
Скажите, пожалуйста, в чем может быть проблема?
while ($the_query->have_posts()) : $the_query->the_post();
the_title();
the_content();
endwhile;
wp_reset_postdata();?>
Спасибо!
<?php $the_query = new WP_Query('cat=6&orderby=rand'); ?>
Как сделать вывод определенных (выбранных мной в ручную) записей в виде списка, но не печатая код каждый раз, а выбирая их в админке, мб есть такой плагин?
//Тут будет вывод самого цикла