トップページのおしらせ取得には2パターンあることを憶えておこう
WordPress
PHP
企業サイトがトップページに「おしらせ」の最新記事を数件表示するのは、もはやお約束ですね。
しかし、ざっくり
「一番新しい記事は全文表示したい」
「全部タイトルだけでいい」
の2パターンがあります。
前者のつもりで作っていたのに、あとから後者になったとき、「あれ?一番新しい記事が出なくね?」となったので備忘録です。
前者は「1番新しい記事を全文取得するコード」と「2番目以降をタイトルだけ取得するコード」の2段構えです。
<?php $my_query = new WP_Query('&cat=2&showposts=1'); ?> <?php if ($my_query->have_posts()) : ?> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <div class="front_info"> <a href="<?php the_permaLink(); ?>"> <span class="nocolor"><time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time></span> <?php if( time() - get_the_time('G') < 604800 ): ?><span style="color:red;">new</span><?php endif; ?> <span class="out_pc"><br></span> <span class="bold"><?php the_title(); ?></span> <?php the_content(); ?> </a> </div> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_query(); ?> <?php $my_query = new WP_Query('&cat=2&showposts=5&offset=1'); ?> <?php if ($my_query->have_posts()) : ?> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <div class="front_info"> <a href="<?php the_permaLink(); ?>"> <span class="nocolor"><time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time></span> <?php if( time() - get_the_time('G') < 604800 ): ?><span style="color:red;">new</span><?php endif; ?> <span class="out_pc"><br></span> <span class="bold"><?php the_title(); ?></span> </a> </div> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_query(); ?>
後者は、上半分がいらないわけですが、単純にここから上半分を削除すると「2番目以降をタイトルだけ取得するコード」が残る形となり、1番目の記事は表示されません。
1行目の「&offset=1」を削除しましょう。
いや、これ、けっこうあるんですよ。
逆に「一番新しいおしらせはちゃんと読んでほしいから全文表示にしたい」という変更もあります。
そしたら今度は、上半分を足しただけでは「1番目が重複しちゃう」となりますので、「&offset=1」を追記する必要があります。
ちょっとしたことですが、ひとたび「あれ?」となれば一大事なので。