Пользовательский цикл для произвольного типа записей

19 окт. 2014 г., 02:11:07
Просмотры: 88.6K
Голосов: 8

Я использую 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(); ?>
3
Комментарии

Извините, не могли бы вы прочитать [ask] и добавлять [edit] в ваше сообщение вместо комментариев? Убедитесь, что вы прочитали [help], чтобы разобраться, как устроен сайт. Также есть WYSIWYG кнопки в редакторе для форматирования содержимого вашего вопроса.

kaiser kaiser
19 окт. 2014 г. 05:00:54

Ваш вопрос не по теме, так как он касается модификации коммерческой темы. Почему бы вам не задать этот вопрос на форуме темы Headway?

Brad Dalton Brad Dalton
19 окт. 2014 г. 09:57:31

Коммерческая тема, которая не является общедоступной.

Brad Dalton Brad Dalton
19 окт. 2014 г. 10:04:53
Все ответы на вопрос 1
0
12

В вашем запросе есть несколько проблем.

  1. Нет параметра с названием category. Вы можете использовать следующие параметры:

    cat (int) - используйте ID категории.
    category_name (string) - используйте slug категории (НЕ название).
    category__and (array) - используйте ID категории.
    category__in (array) - используйте ID категории.
    category__not_in (array) - используйте ID категории.
    
  2. Если вам нужна пагинация в запросе, не следует использовать posts_per_page' => -1. Это переопределит пагинацию и вернет все записи.

  3. Еще один момент: вы проверяете наличие миниатюры записи не в том месте. Проверку следует делать до контейнера с изображением.

Я изменил ваш запрос, и вот как он должен выглядеть. Предполагаю, что 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">&larr;</span> Назад', 'domain' ) ); ?></div>
                <div class="nav-next"><?php previous_posts_link( __( 'Вперед <span class="meta-nav">&rarr;</span>', 'domain' ) ); ?></div>
            </div>
        <?php endif;
    endif;
    wp_reset_postdata();
?>

Этот код должен вернуть все записи из категории current с пагинацией. Если вам нужно получить записи из нескольких категорий, используйте параметр category__in вместо category_name.

'category__in' => array( 2, 6 )

Обратите внимание, что category__in принимает только ID категорий.

19 окт. 2014 г. 06:09:14