Изменение параметров основного цикла WordPress - query_posts

Как известно все страницы WordPress строятся на основе цикла выборки, за вывод цикла отвечает <?php if (have_posts()) : while (have_posts()) : the_post(); ?> , но многим из нас приходится вносить свои правки в основной цикл, например: чтобы исключить с поиска все страницы, и оставить только посты. Как же это сделать спросите вы, довольно таки не сложно, ведь WordPress очень гибкая система.

Первая функция, которая нам нужна это: query_posts(), она отвечает за изменение цикла. Пишем туда например query_posts($query_string."&cat=-3"); и из нашей выборки будут исключены все посты которые относятся к категории с ИД шником = 3 . Внимательные читатели спросят что такое $query_string ? - это текстовая переменная, в которой хранится текущий запрос. Например, для категории с ИД шником 2 это будет так: $query_string="cat=2", не верите? - сделайте echo $query_string; у своей темы перед циклом.

Этот способ изменения основного цикла WordPress овольно простой, но как быть если нужно указывать информацию в виде массива, вместо строки:

$args = array_merge( $wp_query->query, array( 'post_type' => array('post')) );
query_posts($args);

в такой простой способ можно очень легко удалить из поиска search.php всё кроме постов. Это довольно частая задача, которую нужно делать на сайтах визитках, ведь им надо результаты поиска только по новостям или статьям, в любом случае это посты.

Пример изменение цикла вывода поиска, отбираем в поиск только посты, страницы и пользовательский тип аукцион:

<?php
$args = array_merge( $wp_query->query, array( 'post_type' => array('post','page','aukcion')) );
query_posts($args);
?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="posts">
<div class="txt">
<div class="tit_n"><a href="<?php the_permalink(); ?>#midl"><?php the_title(); ?></a></div>
<?php the_excerpt(); ?>
</div>
</div>
<div class="cl_razd"></div>
<?php endwhile; else:?>
<div class="posts">
<div class="txt">
<p>По вашему запросу ничего не найдено!</p>
</div>
</div>
<?php endif;?>

 

Второй пример, удаление всех постов на главной из категории с ИД 4. (Как удалить категорию с главной WordPress)

<?php query_posts($query_string."&cat=-4");?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="posts">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php the_content(''); ?>
</div>
<?php endwhile; endif; ?>

Теперь  вы знаете как изменить основной цикл WordPress, как исключить категории с главной, как вывести в поиске только посты.

Комментарии к записи «Изменение параметров основного цикла WordPress - query_posts»:
Сделать заказ
Онлайн помощь по WordPress