Пользовательский цикл для произвольного типа записей
Я использую WordPress 4.0 и тему Headway. Я создал произвольный тип записей 'property' и хочу создать цикл в 2 колонки, но я не уверен, что нужно добавить в следующий код, чтобы это реализовать. Также хотелось бы добавить пагинацию.
У меня есть и другая информация для размещения внутри цикла. Просто работаю над тем, чтобы всё правильно функционировало.
Вот код, который сейчас работает у меня... без колонок.
<?php $loop = new WP_Query( array( 'post_type' => 'property', 'posts_per_page' => -1, 'category' => 'current' ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="pindex">
<div class="pimage">
<a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) {the_post_thumbnail();} ?></a>
</div>
<div class="ptitle">
<h2><?php echo get_the_title(); ?></h2>
</div>
</div>
<?php endwhile; wp_reset_query(); ?>

В вашем запросе есть несколько проблем.
Нет параметра с названием
category
. Вы можете использовать следующие параметры:cat (int) - используйте ID категории. category_name (string) - используйте slug категории (НЕ название). category__and (array) - используйте ID категории. category__in (array) - используйте ID категории. category__not_in (array) - используйте ID категории.
Если вам нужна пагинация в запросе, не следует использовать
posts_per_page' => -1
. Это переопределит пагинацию и вернет все записи.Еще один момент: вы проверяете наличие миниатюры записи не в том месте. Проверку следует делать до контейнера с изображением.
Я изменил ваш запрос, и вот как он должен выглядеть. Предполагаю, что slug вашей категории - current
, как вы указали в запросе.
<?php
$loop = new WP_Query( array( 'post_type' => 'property', 'category_name' => 'current', 'ignore_sticky_posts' => 1, 'paged' => $paged ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="pindex">
<?php if ( has_post_thumbnail() ) { ?>
<div class="pimage">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
</div>
<?php } ?>
<div class="ptitle">
<h2><?php echo get_the_title(); ?></h2>
</div>
</div>
<?php endwhile;
if ( $loop->max_num_pages > 1 ) : ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Назад', 'domain' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Вперед <span class="meta-nav">→</span>', 'domain' ) ); ?></div>
</div>
<?php endif;
endif;
wp_reset_postdata();
?>
Этот код должен вернуть все записи из категории current
с пагинацией. Если вам нужно получить записи из нескольких категорий, используйте параметр category__in
вместо category_name
.
'category__in' => array( 2, 6 )
Обратите внимание, что category__in
принимает только ID категорий.
