我使用一个自定义查询检索帖子类型的两个类别,每列仅显示该类别的6篇帖子,如果更多的话,请使用分页。
我喜欢做的是在同一行或同一行的每列上显示每个帖子,这只是出于设计目的,我认为查询必须计算前两个帖子,放置两个div(例如),然后放置下两个div,然后再放置下一个div,直到完成第六行分页(如果有更多)。
真的很感谢任何意见或想法来解决这个问题,真的不知道怎么做。
以下是我使用的自定义查询:
<?php
// for a given post type, return all
$post_type = \'evento\';
$tax = \'categorias-eventos\';
$tax_terms = get_terms($tax);
$post_counter = 0; // reset so we can generate columns
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
if ($tax_terms) { ?>
<ul class="column_wrap" style="width:45%; float:left;">
<?php foreach ($tax_terms as $tax_term) {
$args = array(
\'post_type\' => $post_type,
"$tax" => $tax_term->slug,
\'post_status\' => \'publish\',
\'posts_per_page\' => 6,
//\'posts_per_page\' => -1,
//\'paged\' => $paged,
\'orderby\' => \'title\',
\'order\' => \'ASC\',
\'caller_get_posts\' => 1
); // END $args
$my_query = null; // clear the query variable
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<li class="column_row" style="float:left;">
<h4><?php echo $tax_term->name; ?></h4>
</li>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li class="column_row" style="float:left;">
<div class="retailer_wrap retailer_id-<?php the_ID(); ?>">
<p><strong><?php the_title(); ?></strong></p>
<p><?php echo get_post_meta($post->ID, \'eventdate\', true);?></p>
<p><?php echo get_post_meta($post->ID, \'eventplace\', true);?></p>
</div>
</li>
<?php $post_counter++; ?>
<?php if ( 0 == $post_counter % 6 ) { ?>
</ul>
<ul class="column_wrap noneed" style="width:45%; float:left;">
<?php } // END if $post_counter ?>
<?php
endwhile;
//wp_pagenavi( array( \'query\' => $my_query ) );
} // END if have_posts loop
wp_reset_query();
} // END foreach $tax_terms ?>
</ul>
<?php } // END if $tax_terms
?>
SO网友:Wyck
输出相同查询但样式不同的一种方法是使用current_post
或与rewind_posts
, 或使用rewind_posts
单独地
例如:
您的初始查询
if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();
$counter_id = $my_query->current_post + 1; //this is the counter
// then use a conditional to style each on based on `# or %
if ($wp_query->current_post % 2 == 0)
// add custom styles
endwhile; else:
//
// Or rewind the post with a count and conditional
rewind_posts(); //rewind the post back to the start
if $counter_id == 1 //do some style
if $counter_id > 3 // do some style
//etc
另一个更简单的选择是只使用多个单独的循环(和DB查询)
我希望这个逻辑有意义并有帮助,我没有时间真正编写查询并测试它。