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>';

?>

つまり、基本的に2つの空の文字列を含む配列があります。次に、各列の内容を。という名前の変数に割り当てます$content。次に、その変数の値を変数の適切な部分に追加し$columns、カウンターをインクリメントします$i

次に、各列の内容を適切なラッピング<div>要素にエコーするだけです。そうでない場合は、それらを2つの列に分割します。

于 2012-11-24T21:38:29.760 に答える