Wordpress输出循环到html列(两个div)?

时间:2012-11-24 21:26:56

标签: php wordpress-theming wordpress

我在自定义帖子类型中有一个循环。

我想只选择8个帖子,并将输出打印成2列,每列4个帖子。我真的不确定如何处理这个问题。到目前为止,我有:

<?php
            $args = array( 'post_type' => 'hh_event', 'posts_per_page' => 8 );
            $loop = new WP_Query( $args );
            while ( $loop->have_posts() ) : $loop->the_post();

                echo '<div class="entry-date">';
                $event_date = get_post_meta($post->ID, 'event_date', true); 
                echo date('M j',strtotime($event_date));
                echo '</div>';
                the_title();
                echo '<div class="entry-content">';
                the_content();
                echo '</div>';

            endwhile;
        ?>

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是将您的内容存储在数组中,如下所示:

<?php
$args = array( 'post_type' => 'hh_event', 'posts_per_page' => 8 );
$loop = new WP_Query( $args );

$columns = array( '', '' );
$content = '';
$i = 0;
global $post;

while ( $loop->have_posts() ) : $loop->the_post();
    $content = '<div class="entry-date">';
    $event_date = get_post_meta($post->ID, 'event_date', true); 
    $content .= date('M j',strtotime($event_date));
    $content .= '</div>';
    $content .= get_the_title();
    $content .= '<div class="entry-content">';
    $content .= apply_filters( 'the_content', $post->post_content );
    $content .= '</div>';

    $columns[ ($i % 2) ] .= $content;
    $i ++;
endwhile;

echo '<div class="column-left">' . $columns[0] . '</div><div class="column-right">' . $columns[1] . '</div>';

?>

所以基本上你有一个包含两个空字符串的数组。然后,将每列的内容分配给名为$content的变量。然后,将该变量的值附加到$columns变量的正确部分,并递增计数器$i

然后只需将每列的内容回显到正确的包装<div>元素,或者您将它们分成两列。