0

私はまだ PHP を習得するために取り組んでおり、このコードにかなりの時間を費やしてきました。基本的に、コードは過去 10 日間の WP 投稿を取得し、ランダムに 2 つを選択して、投稿の最初の画像を表示し、その投稿にリンクすることを目的としています。また、最初の画像をクラス .second で設定し、2 番目の画像をクラス .third で設定することも想定されています。残念ながら、ある程度は機能していますが、同じイメージの複製コピーを作成し続けています。配列は機能しているようですが、必要なのは各画像のコピーが 1 つ少ないだけです。日付フィルターと catch_that_image() 関数を除いたコードは次のとおりです。どちらも正常に動作しています。

add_filter( 'posts_where', 'filter_where' );

$banner_class = array('second','third');
$the_query = new WP_Query( array('orderby' => 'rand', 'posts_per_page' => '2' ));

while ( $the_query->have_posts() ) : $the_query->the_post();
if (!empty($the_query)) {
foreach ($banner_class as $value){ ?>
<div class="banner small image <?php echo $value; ?>" >
<?php echo '<a href="'. get_permalink().'">'; ?>
<img src="<?php echo catch_that_image(); ?>" width="300px"> 
<?php echo '</a></div>';
}
}

endwhile;


remove_filter( 'posts_where', 'filter_where' );

それは簡単な解決策であり、間違いなく while と foreach を一緒に使用することと関係があります。出力は次のとおりです。 http://www.mymusicisbetterthanyours.com/slider-test/

どんな助けでも大歓迎です!

4

1 に答える 1

1
$n = 0;
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
    <div class="banner small image <?php echo $banner_class[$n]; ?>">
        <a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image(); ?>" width="300px"></a>
    </div> 
<?php $n ++; endwhile; ?>

実際のループでその foreach ループを取り除きます。そのように、各反復でhtmlを2回書いています。バナー クラスの基本カウンターを追加します。この場合、$n ではなく、post ループの各反復でそれをインクリメントします。

ところで、私はあなたの出力を単純化しました。クエリが空かどうかを確認する必要はありません。それが while 条件が行っていることです。そして、html のセクションを書くために php に出入りすることは意味がありません。また、ランダムな投稿が過去 10 日間に制限されていることを保証するクエリには何も表示されません。

于 2013-09-26T15:22:51.860 に答える