web-dev-qa-db-ja.com

Blogroll - 最初の投稿の異なるレイアウト

私のメインのblogrollに1ページに10件の投稿を表示させたいのですが、各ページの最初の投稿は他の部分の上の別のdivに設定され、おすすめの画像を持っています。

これが私がこのページの最初の投稿に対して提起したものです。

// WP_Query arguments
$args = array (
    'pagination'             => true,
    'paged'                  => $paged,
    'posts_per_page'         => '10',
    'ignore_sticky_posts'    => true,
    'order'                  => 'DESC',
    'orderby'                => 'date',
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
        $query->the_post();
                the_title();
        the_content();
    } 
?>

そしてこれは2番目のことでした:

<?php

// WP_Query arguments
$args = array (
    'pagination'             => true,
    'paged'                  => $paged,
    'posts_per_page'         => '9',
    'offset'                 => '1',
    'ignore_sticky_posts'    => true,
    'order'                  => 'DESC',
    'orderby'                => 'date',
);

// The Query
$query1 = new WP_Query( $args );

// The Loop
if ( $query1->have_posts() ) {
    while ( $query1->have_posts() ) {
        $query1->the_post();
        the_title();
        the_content();
    }
}

// Restore original Post Data
wp_reset_postdata();

?>

最初の投稿は私がページングするときに変更されますが、他の9つの投稿は最初のものと同じページ引数を取得していても変更されません。

また、私はあなたがこれを達成しなければならないかもしれないあらゆる代替の方法を考えています。ループの最初の実行時をマークする変数で最初の投稿を変更することについて話した投稿を見ましたが、最初の投稿は通常のループの外にあり、それ自身のセクションにある必要があるため、役に立ちません。

あなたが与えることができるどんな援助でも早めにありがとう!

1

スコープに対して2つのクエリを作成するのは絶対に必要ない作業です。

最初の投稿の出力を変更するには、クエリを1つだけ使用し、$wp_query->current_postプロパティを使用します。

  $args = array (
    'pagination'             => true,
    'paged'                  => $paged,
    'posts_per_page'         => '10',
    'ignore_sticky_posts'    => true,
    'order'                  => 'DESC',
    'orderby'                => 'date',
  );

  // The Query
  $query = new WP_Query( $args );

  // The Loop
  if ( $query->have_posts() ) {

     $query->the_post();

     if ( $query->current_post == 0 ) {  // first post

       echo '<div class="first-post">';
       the_title();
       the_content();
       echo '</div>';

     } else {

        echo '<div class="second-to-ninth-post">';
        the_title();
        the_content();
        echo '</div>';

     }

     wp_reset_postdata();

  } 
5
gmazzap