サポート » 使い方全般 » 新着記事一覧を条件付きで表示したい

  • 新着記事一覧を表示しているのですが、「最新記事から5つ目以降」という条件指定で表示したいと考えております。

    最新記事から4つ目まではスライダーで表示するため、最新から5つ目移行を抽出したいです。

    現在、ループは以下のように入力しています。

    
    <div id="content_box">
    				<?php if (have_posts()) : $j = 0; while (have_posts()) : the_post(); ?>
    					<div class="post excerpt <?php echo (++$j % 3 == 0) ? 'last' : ''; ?>">
    						<header>
    							<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="nofollow" id="featured-thumbnail">
    								<?php if ( has_post_thumbnail() ) { ?>
    								<?php echo '<div class="featured-thumbnail">'; the_post_thumbnail('homepage',array('title' => '')); echo '</div>'; ?>
    								<?php } else { ?>
    								<div class="featured-thumbnail">
    									<img width="200" height="110" src="<?php echo get_template_directory_uri(); ?>/images/nothumb.png" class="attachment-featured wp-post-image" alt="<?php the_title(); ?>">
    								</div>
    								<?php } ?>
    							</a>
    							<span><?php the_category(', ');?></span>
    							<h2 class="title"><!-- 一覧のタイトル表示-->
    								<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></a>
    							</h2>
    						</header><!--.header-->
    					</div><!--.post excerpt-->
    

    the_post(); のなかに必要な条件を指定すれば上手くいくでしょうか?

    おわかりの方がいましたら、ご教示いただけると幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • <?php if (have_posts()) : $j = 0; while (have_posts()) : the_post(); ?>

    こちらの文面が

    if (have_posts()) :もし”抽出記事があれば”」「while (have_posts()) :その”抽出記事が存在する”間中ずっと」「the_post();当該投稿記事について」

    という意味になります。

    これはその一番目の「もし抽出記事があれば」の「抽出記事」について「抽出方法を変更すれば」、に必要な条件が満たされていればうまくいきそうな気がしませんか?

    the_post();はその抽出された者たちの中から取り出した現在位置の1件のようなので、そこにいくら条件を足しても他の値になりそうな気がしないですよね。

    「じゃあその抽出された値はどこに保存されているんだ。変数がみえない」と思われるでしょうが、それをワードプレス本体が保持してるのでその保持した内容をhave_posts()関数で取り出しているのです。
    逆に、そのhave_posts()関数に保存されている値について 例えば WP_QUERY などで抽出方法を変更すれば、その表示内容は意図したものになるのではないでしょうか。

    ちょうど抽出した複数項目の開始点を変更する要素に「OFFSET」というものがあるようです。
    WP_Query

    pre_get_posts アクションを使い、 $wp_query->set( 'offset', 4 ) でしょうね。
    新着記事一覧とのことですが、どこのアーカイブかによって書き方が多少変わってくるので、教えていただきたいです。

    @msio さん
    have_posts() はループが終了しているかどうかを判別するだけですね。
    the_poat() はループを進め、グローバル変数 $post をセットし直します。

    @latobeam さま
    何の知識もなく誤りを呈してしまい申し訳御座いませんでした。
    ご指摘ありがとうございます。お手数をおかけいたしました。

    @eott さま
    何のお力にもなれず申し訳御座いませんでした。
    私も勉強中の身にて共に学ぶものとしてお目汚しご容赦いただけますと幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。