在3栏中显示WordPress帖子内容

时间:2012-07-19 作者:Shawn Ang

如何使用WP\\u Query();,按3列和顺序显示WordPress帖子内容?

例如

<div class="1column">
    Post-1
    Post-4
</div>
<div class="2column">
    Post-2
    Post-5
</div>
<div class="3column">
    Post-3
    Post-6
</div>
感谢您的帮助!谢谢

3 个回复
最合适的回答,由SO网友:hakre 整理而成

像你所知道的那样查询帖子,然后获取所有帖子,并按照你需要的顺序对它们进行重组。负责建立全球$post 变量,以确保模板代码仍然有效。

这个array_chunk­Docs 对于基于列的输出,函数通常很方便:

$query = WP_Query($queryParameters);
if ($query->have_posts())
{
    $columnCount = 3;
    $rows = array_chunk($query->get_posts(), $columnCount);
    foreach (range(0, $columnCount - 1) as $column)
    {
        printf("<div class=\\"class-%dcolumn\\">\\n", $column + 1);
        foreach ($rows as $row)
        {
            if (false == isset($row[$column]))
            {
                continue;
            }
            $post = $row[$column];
            setup_postdata($post);
?>
   ... single post template html/php mixture ...
<?php            
        }
        print("</div>\\n");
    }
}
其他注意事项:

CSS类名不能以数字开头。请参阅CSS规范和/或What characters are valid in CSS class names? - 我在前面加了class-....

SO网友:selva

Try below code...

<?php
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

$get_all_post = new WP_Query(\'posts_per_page=15&paged=\' . $paged);
$post_cont=0;
while ( $get_all_post->have_posts() ) : $get_all_post->the_post();
if(($post_cont)%3==0 || $post_cont==3){?><div class=\'1column\'><?php }?>

title
  content...
<?php if(($post_cont)==2 || $post_cont==5){?></div><?php }?>


$post_cont++;
    endwhile;
?>
SO网友:janw

这样做会更容易,在html中它是有效的,在google上它的索引也更好:如果你同意这会更好,我很乐意给出WP_Query 如果需要,请编写代码。

<style><!--put this in the css-->
.column{
    float:left;
    width:33.3%;
}
</style>
<div class="column">
    Post-1
</div>
<div class="column">
    Post-2
</div>
<div class="column">
    Post-3
</div>
<div class="column">
    Post-4
</div>
<div class="column">
    Post-5
</div>
<div class="column">
    Post-6
</div>

结束