0

我有一个循环通过我的自定义帖子类型。

我只想选择 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;
        ?>
4

1 回答 1

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>元素,或者您要将它们分成两列。

于 2012-11-24T21:38:29.760 回答