やりたいこと:index.phpでは、the_content
を使用して選択可能な数の完全な投稿を表示し、その下に選択可能な数(the_excerpt
を使用して関数内で投稿の数をハードコードすることができます)を表示するループ)グリッドパターンで2の抜粋が広くなります。投稿のpaged
ページは、抜粋のグリッド表示のみを使用します。このような:
このループは、画像ではなくテキストと抜粋とコンテンツを処理する場合に理想的です。 http://www.billerickson.net/a-better-and-easier-grid-loop/
さらに別のアップデート11/03/12:
Kaiserに感謝します。最後の1つのバグ:2ページ目には、すべての抜粋ではなく2つの完全な投稿と抜粋が表示されています。
global $wp_query;
if ( have_posts() )
{
while( have_posts() )
{
the_post();
// Add Class: "post-number-X"
$current_post = "post-number-{$wp_query->current_post}";
// Add Class: "home" (for index page) or "post-number-X-of-total";
$current_in_total = 'home';
if ( is_paged() )
{
$current_in_total = "post-number-";
$current_in_total .= get_query_var( 'paged' ) * get_query_var( 'posts_per_page' ) - $wp_query->current_post;
$current_in_total .= "-of-total";
}
// Add Class: Even/Odd
$even_odd = ( 0 === $GLOBALS['wp_query']->current_post % 2 ) ? ' even' : ' odd';
// Avoid even/odd class for excerpts (everything after the 2nd post)
2 > $wp_query->current_post AND $even_odd = '';
// MarkUp: Uses `post_class()` to add classes
?>
<article <?php post_class( "{$current_post}{$even_odd} {$current_in_total}" ); ?>>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php
// Home/Index/Front-Page/Archive first page
if ( ! is_paged() )
{
// Display the_content(); for the first 2 posts, then the_excerpt();
2<= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>
</article>
<?php
}
// Add navigation ...
twentyeleven_content_nav( 'nav-below' );
} // endif;
unset( $current_post, $current_in_total, $even_odd );
$wp_query
プロパティは"alot"を許可します実際、$wp_query
のようなcurrent_post
オブジェクトの一部を使用すれば、それほど難しくありません。
ここでは、is_paged()
、$wp_query->current_post
、および$wp_query->posts_per_page
などのトリッキーな使用例をいくつか示しています。最初のページかそれ以降のページか、最初の3つ(または任意の数)の投稿を受け取ったかに応じて、MarkUpを切り替えることができます。また、post_class()
という名前のフィルターもあるpost_class()
関数を使用するのも良いことです。3つの引数があります。$classes
(デフォルトWPコアクラス)、$class
(呼び出し中に定義したクラスの配列-以下の例を参照)および$post_ID
。
global $wp_query;
if ( have_posts() )
{
// Add navigation ... TOP
twentyeleven_content_nav( 'nav-above' );
while( have_posts() )
{
the_post();
// Add Class: "post-number-X"
$current_post = "post-number-{$wp_query->current_post}";
// Add Class: "home" (for index page) or "post-number-X-of-total";
$current_in_total = 'home';
if ( is_paged() )
{
$current_in_total = "post-number-";
$current_in_total .= get_query_var( 'paged' ) * get_query_var( 'posts_per_page' ) - $wp_query->current_post;
$current_in_total .= "-of-total";
}
// Add Class: Even/Odd
$even_odd = ( 0 === $GLOBALS['wp_query']->current_post % 2 ) ? ' even' : ' odd';
// Avoid even/odd class for excerpts (everything after the 3rd post)
3 > $wp_query->current_post AND $even_odd = '';
// MarkUp: Uses `post_class()` to add classes
?>
<article <?php post_class( "{$current_post}{$even_odd} {$current_in_total}" ); ?>>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php
// Home/Index/Front-Page/Archive first page
if ( ! is_paged() )
{
// Display the_content(); for the first 3 posts, then the_excerpt();
3 <= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>
</article>
<?php
}
// Add navigation ... BELOW
twentyeleven_content_nav( 'nav-below' );
} // endif;
unset( $current_post, $current_in_total, $even_odd );
以下のように変更してください。未テスト:
global $wp_query, $paged;
parse_str( $query_string, $query_args );
// Home/Index/Front-Page/Archive first page
if ( 0 == $paged )
{
// Display the_content(); for the first 2 posts, then the_excerpt();
2<= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>