私はこのように複数のループを持つカスタムページテンプレートを作成しています http://demos.gabfirethemes.com/advanced/category/football/
投稿が複数の列に分割されているのがわかります。おすすめの投稿が1つ、次に2つの投稿、右側に4つの投稿があります。
私は2列に投稿を得ることしかできませんでした。
this のようにループを複数の列に分割する方法を教えてください。
列はCSSによって管理されます。 Bootstrapや Blueprint CSS などのCSSフレームワークを使用しているのであれば、記事に追加できるクラスはありません。/postコンテナ。これにより、必要な量の列に浮くようになります。
Blueprint Cssの場合、これはspan-8
(24列のグリッド上の3列のレイアウト)で、最後の投稿の行に添付されたlast
のクラスになります。
Twitters Bootstrapの場合、すべての行をラップし、クラスrow
を持つコンテナ付きのspan4
(12列グリッド上の3列レイアウト)です。
ですから、どの投稿であなたが(あなたのクエリの内側にいるのか - 頭の中では0
でほとんどのプログラミング言語でカウントが始まることを覚えておいてください)st その後、特定の投稿にクラスを追加(またはMarkUpを挿入)します。他のすべての投稿には、デフォルトクラスまたはMarkUpを追加するだけです。
以下の例では、データベース関数のインスタンスを保持する$wpdb
グローバルを使用しています。このようにして、カウンタを取得するためにインスタンスvar current_post
をチェックすることができます。それから++
を使ってカウンターをインクリメントします。
その後、すべてが post_class()
に入ります。これは、WPの内部クラスの標準セット、および追加したカスタム(CSSフレームワーク固有の)クラスをエコーします。 class="wp-internal-classes and custom-classes"
をコンテナーに追加します(div
またはarticle
)。
global $wpdb;
if ( have_posts() )
{
while ( have_posts() )
{
the_post();
$class = get_post_format();
// Current post: starts with index 1 - fixing the fact, that PHP starts with 0 else.
// [A] HER YOU CAN ADD ANY CLASSES THAT YOU NEED FOR EVERY 3rd POST
$class .= 0 === ( ++$wpdb->current_post % 3 ) ? ' special-class' : '';
?>
<!-- Open Post Container -->
<article <?php post_class( "span4 post{$class}" ); ?> id="post-<?php the_ID(); ?>">
<!-- [B] HERE YOU CAN ADD YOUR ACTUAL POST -->
<!-- // Close Post Container -->
</article>
}
}
this answer に基づくコードは、さらに調整が必要ですが、その概念を実証しています。
$count = 0;
while ( have_posts() ) : the_post();
if ( $count < 1 ) {
// first post
echo '<div id="left-column">';
the_title();
} elseif ( $count <= 2 ) {
// next 2 posts
the_title();
if( $count == 2) echo '</div><!-- end left-column -->';
} else {
// rest of the posts
if( $count == 3) echo '<div id="right-column">';
the_title();
}
$count++;
endwhile;
echo '</div><!-- end right-column -->';