0

どうすればこれを達成できますか、

一度に 4 つの投稿を表示し、4 つの投稿の完全なブロックを移動するスライドショーがあります。ここで直面している問題は、スライダーに 9 つの投稿があり、最後に 1 つの投稿が表示されること4posts -> 4posts -> 1Postです。

私がする必要があるのは、投稿の総数が 4 の倍数でない場合、クエリを再度巻き戻すことです。ループ内に 9 つの投稿がある場合は、クエリを再利用し、最初の 3 つの投稿で空白スペースを埋めます。 .

ここに私のPHPコードがあります:

<?php $slide_thumb_query = new WP_Query('category_name=slideshow&meta_key=_thumbnail_id'); ?>
<?php while ($slide_thumb_query->have_posts()) : $slide_thumb_query->the_post(); ?>
<li>
    <a href="<?php $image_id = get_post_thumbnail_id();
        $image_url = wp_get_attachment_image_src($image_id,'homeslider', true);
        echo $image_url[0];  ?>">
            <img src="<?php $image_id = get_post_thumbnail_id(); $image_url = wp_get_attachment_image_src($image_id,'homeslider-thumb', true); echo $image_url[0];  ?>" title="<?php the_title()?>"/>
    </a><a href="<?php the_permalink();?>">
    <span class="overlay-box"></span>
    </a>
</li>
<?php endwhile; ?>
4

2 に答える 2

0

WP_Query のrewind_postsメソッドを使用して、いつでも最初からやり直すことができます。したがって、最初のループの最後に到達したら、あと何件の投稿を追加したいかを把握し、追加のループを作成する必要があります。rewind_postsデータベースにヒットしないため、追加のクエリなどとは異なります。コードでの私の考えは次のとおりです。

$featured_posts = new WP_Query( ... );
while ( $featured_posts->have_posts() ) {
    $featured_posts->the_post();
    // Output your things here
}

// Do we need more posts?
if ( count( $featured_posts->posts ) % 4 > 0 && count( $featured_posts->posts ) > 0 ) {
    $more_to_go = count( $featured_posts->posts ) % 4;

    while ( true ) {
        $featured_posts->rewind_posts();
        while ( $featured_posts->have_posts() ) {
            $featured_posts->the_post();
            // Keep printing your things here

            $more_to_go--;
            if ( $more_to_go < 1 )
                break 2; // break both while loops
        }
    }
}

複数のループがあるので、注目の投稿に 1 つのアイテムしか含まれていなくても、それが 4 回繰り返されるだけです。私はこれをテストしませんでしたが、うまくいけば、どこを掘り下げるかの手がかりになるでしょう.

乾杯!

于 2012-10-10T09:42:54.610 に答える
0

これを JavaScript で解決することをお勧めします。スライド ショーは JavaScript で作成されているため、問題は解決するはずです。
グローバルな手順:

  1. <li>アイテムを数える
  2. それが4っぽい数値かどうかを判断します(モジュロまたは必要なものを使用してください)
  3. <li>必要な最初の をコピーして、最後に追加します。

質問がありますか?

于 2012-10-10T09:00:57.357 に答える