0

私のワードプレスのテーマでは、フッターにサイドループを追加して最新の投稿を取得したいと考えています。このループの最初の投稿では、サムネイル、タイトル、投稿のプレビューが表示されます。次の 5 つの投稿では、タイトル/リンクのみが表示されます。

メイン div で既にレギュラー<?php if(have_posts()) : while(have_posts()) : the_post(); ?> を使用しているため、get_posts() に基づくサイド ループを使用する必要があります。

これは私が取得したいものですが、機能していません:

<?php query_posts('cat=6&showposts=5'); ?>
<?php $posts = get_posts('category=6&numberposts=5'); 
$count = count($posts);
foreach ($posts as $post) : start_wp(); ?>
    <?php if ($count < 2) : ?>

        /// code for the 1st post (thumb etc..)

    <?php else : ?>

           /// code for the 4 following post (links to posts only)          

    <?php endif; ?>
<?php endforeach; ?>

通常のワードプレス ループにカウント/条件を追加する方法は知っていますが、get_posts() 関数では追加できません。

それを達成するのを手伝ってもらえますか?

前もって感謝します ;)


編集:解決策:

OK、それを達成するために「オフセット」引数を使用しました:

<?php $posts = get_posts('numberposts=2&offset=0'); 
foreach ($posts as $post) : start_wp(); ?>

<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" class="footernews-thumb">
<?php if ( has_post_thumbnail()) : ?>
<?php the_post_thumbnail(thumbnail); ?>
<?php endif; ?>
</a>

<h2 class="footernews-title"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<p class="footernews-preview"><?php the_content_rss('', TRUE, '', 20); ?></p>

<?php endforeach; ?>        

<?php $posts = get_posts('numberposts=3&offset=1'); 
foreach ($posts as $post) : start_wp(); ?>                      
<h2 class="footernews-title"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>                        
<?php endforeach; ?>

「ループ」は実際にはループではないため、発生回数をカウントしないようにしました。

4

2 に答える 2

0

取得する投稿数 (5) に設定$countしているため、2 未満になることはありません。

これを次のように変更する必要があります。

<?php query_posts('cat=6&showposts=5'); ?>
<?php $posts = get_posts('category=6&numberposts=5'); 
$first = true;
foreach ($posts as $post) : start_wp(); ?>
    <?php if ($first) : ?>

        /// code for the 1st post (thumb etc..)
        <?php $first = false; ?>
    <?php else : ?>

           /// code for the 4 following post (links to posts only)          

    <?php endif;?>

<?php endforeach; ?>
于 2013-02-20T22:11:08.687 に答える
0

そのような単純なインクリメントチェックを使用します....

<?php query_posts('cat=6&showposts=5'); ?>
<?php $posts = get_posts('category=6&numberposts=5'); 
$i = 1;
foreach ($posts as $post) : start_wp(); ?>
<?php if ($i == 1) : ?>

    /// code for the 1st post (thumb etc..)

<?php else : ?>

       /// code for the 4 following post (links to posts only)          

<?php endif; ?>
<?php ++$i;
<?php endforeach; ?>
<?php unset($i); ?>

これにより、最初の反復の追加出力のみが得られ、その後はより少ないコードを使用して続行されます。

于 2013-02-20T22:22:45.900 に答える