我想做一个多列布局。由于CSS3对专栏布局的采用还很薄弱,我想也许我可以抓住我所有帖子的前半部分(然后是第二部分),并将它们添加到自己的UL元素中。
我不确定Wp\\U查询如何/是否可能做到这一点?
我想以字母顺序结束我的帖子,但将其分为两个列表(我想使用两个查询),因此:
<ul>
<li>a</li>
.
.
.
</li>m</li>
</ul>
<ul>
<li>n</li>
.
.
.
</li>z</li>
</ul>
然后,我可以用CSS设置每个列表的样式,并获得类似CSS3中多列布局的布局。
有没有人知道如何在这里构建我的查询?
edit to explain how this isn\'t a duplicate
这是关于形成一个两列布局的问题,当然,但问题非常不同:“如何获得所有帖子的一半”,而不是如何解决一个非常具体的布局用例,就像链接的“复制”一样。(我没有找到,因为这不是同一个问题)。
此外,我在寻找按字母顺序排列、垂直降序的帖子,而不是示例中的A | B、C | D。
最合适的回答,由SO网友:birgire 整理而成
如果要将其拆分为两个列表,可以使用wp_count_posts()
数一数你发表的帖子的数量
$total_cpt = wp_count_posts(\'cpt\')->publish;
除以2:
$half_of_cpt = sprintf( \'%d\', $total_cpt / 2 );
然后你可以在循环中使用这个数字来分割你的列表。
SO网友:gmazzap
以下内容
将适用于每个查询(即使使用分页),因此它更灵活,只需一个循环(作为wp_count_posts
)不要调用其他额外的db查询,如wp_count_posts
这样做更快,不需要任何其他变量ouside循环,因此更简单
$args = array(\'post_type\'=>\'cpt\', \'orderby\'=>\'title\', \'order\'=>\'ASC\'); // any args here
$query = new WP_Query($args);
if ( $query->have_posts() ) :
echo \'<ul>\';
while ( $query->have_posts() ) : $query->the_post();
echo \'<li>\' . get_the_title() . \'</li>\';
if ( ( $query->current_post + 1 ) == ceil($query->post_count / 2) ) echo \'</ul><ul>\';
endwhile;
echo \'</ul>\';
endif;