0

ここでの私の目標は、複数のワードプレス ループを使用して、特定のカテゴリの各投稿を個別にスタイル設定することです。実際のクエリを除いて、ほとんど理解できたと思います..

最初のループでカテゴリ内の {MOST RECENT} 投稿をクエリし、次に 2 番目のループでカテゴリ内の 2 番目の最新の投稿をクエリし、次に次のループで 3 番目の最新の投稿をクエリできるようにする必要があります。それぞれに個別のクラスとスタイルがあります。

どんな助けでも素晴らしい +++ !!

<?php if (have_posts()) : ?>
           <?php query_posts('category_name=Main&posts_per_page=1&={MOST RECENT}'); ?>
               <?php while (have_posts()) : the_post(); ?>    

                            <div class="row1">
                                <div class="one">
                                    <div class="post_data">
                                        <div class="icons_right"><img src="pop_out_icon.png" alt="pop out icon" /></div>
                                        <h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
                                        <h2 class="post_snippet">Lorem Ipsum Dolar Sit Amet.</h2>
                                        <p class="post_date"><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></p>
                                    </div> <!-- post_data //-->
                                <?php the_content(); ?>
                            </div>  <!-- 1 //-->
               <?php endwhile; ?>

                 <?php query_posts('category_name=Main&posts_per_page=1&={SECOND MOST RECENT}'); ?>
               <?php while (have_posts()) : the_post(); ?>    

                            <div class="row2">
                                <div class="two">
                                    <div class="post_data">
                                        <div class="icons_right"><img src="pop_out_icon.png" alt="pop out icon" /></div>
                                        <h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
                                        <h2 class="post_snippet">Lorem Ipsum Dolar Sit Amet.</h2>
                                        <p class="post_date"><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></p>
                                    </div> <!-- post_data //-->
                                <?php the_content(); ?>
                            </div>  <!-- 2 //-->
               <?php endwhile; ?>

     <?php endif; ?>
4

1 に答える 1

1

独自のクラスを定義するために異なるループを使用したいのですが、ループ ブロックはほとんど同じであることに気付きました。要素のクラスを変更するだけの場合は、3 つの別々のループを使用する必要はありません。テンプレートが乱雑になり、単一のループを使用するよりもはるかに遅くなるからです。

また、query_posts の使用は避ける必要があります。これは、デフォルトの Wordpress ループをオーバーライドし、特にクエリをリセットするのを忘れた場合に、意図しない結果が生じる可能性があるためです。

ループ内の投稿の順序は、デフォルトで最新の投稿に設定されるため、順序付けパラメーターの設定について心配する必要はありません。

あなたの例を使用して、ループが何回反復されたかに応じて、動的クラスをラッパーに適用するためにすべてを作り直しました。投稿自体の属性を使用してクラスを定義し、一意にすることができることに注意してください (この場合、投稿 ID が使用されます)。

<?php
$count = 0;
$postsPerRow = 4; //<-- This will help set your top wrapper
$query = new WP_Query('category_name=Main&posts_per_page=3');
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
if($count<(floor($query->found_posts/$postsPerRow)*$postsPerRow)){
    $open = !($count%$postsPerRow) ? '<div class="row row-'.(floor($count/$postsPerRow)+1).'">' : '';
    $close = !($count%$postsPerRow) && $count ? '</div>' : '';
    echo $close.$open;
?>    
    <div class="<?php echo "loop-$count post-".get_the_ID(); ?>">
        <div class="post_data">
            <div class="icons_right">
                <img src="pop_out_icon.png" alt="pop out icon" />
            </div>
            <h1 class="post_title">
                <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
            </h1>
            <h2 class="post_snippet">Lorem Ipsum Dolar Sit Amet.</h2>
            <p class="post_date"><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></p>
        </div> <!-- post_data //-->
        <?php the_content(); ?>
    </div>  <!-- 1 //-->
<?php
$count++;
}
endwhile;endif;
echo $count ? '</div>' : ''; //<-- Close row wrapper
?>

更新:これで、トップ ラッパーは行ごとに 4 つの投稿を保存します。これは $postsPerRow 変数を使用して必要に応じて調整できます。また、必要に応じて Posts_per_page パラメータをいつでも増やすことができます。

編集 2: WP Queryを使用すると、必要な値を分離できるという利点があります。最新の質問に対する更新のコードを確認してください。

于 2012-05-12T15:26:49.063 に答える