web関連

最新記事の2番目以降から取得したい時の記述の方法

最新記事の2番目以降から取得したい時の記述の方法

カスタム投稿で最新記事の1件以外を過去記事として表示をしたかった時のめも

カスタム投稿の2番目の記事を出力する書き方

<div>
<?php
$args = array(
'numberposts' => 99,
'post_type' => 'カスタム投稿タイプ名',
'offset' => 1,
);
$posts = get_posts( $args );
if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post );
?>
<?php //最新以外の記事一覧 始まり ?>
<a class="item_backnumber" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php //最新以外の記事一覧 終わり ?>
<?php endforeach; ?>
<?php else: ?>
記事はありません
<?php endif;
wp_reset_postdata(); ?>
</div>

「’offset’ => 1」が「何番目の記事から出力する」記述です。
※2番目の記事から出力なので「1」、1番目は「0」

numberpostsを全件表示しようと「-1」を指定すると1件目がでちゃいます。
なので「99」件表示

補足

普段わからないことを調べて見つけた記事をもとにコードを書き直していてnumberpostsshowpostsposts_per_pageと記事を何件表示するかを指定する時に使うものだがどれを使えばいいのか気になったのでちょっと調べました

numberposts
管理画面の「表示設定」の「1ページに表示する最大投稿数 」以上の数値は出力しないらしい、だから「99」入れても99も出ないっぽい
showposts
「posts_per_page」が導入されたことで非推奨になったって2010年の記事で書いてあった。
結構最近使った気がする…直さないと…
posts_per_page
管理画面の「表示設定」の「1ページに表示する最大投稿数 」を無視して指定ができるっぽい

つまり

<div>
<?php
$args = array(
'posts_per_page' => 99,
'post_type' => 'カスタム投稿タイプ',
'offset' => 1,
);
$posts = get_posts( $args );
if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post );
?>
<?php //最新以外の記事一覧 始まり ?>
<a class="item_backnumber" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php //最新以外の記事一覧 終わり ?>
<?php endforeach; ?>
<?php else: ?>
記事はありません
<?php endif;
wp_reset_postdata(); ?>
</div>

これが正しい書き方みたい…たぶん(numberpostsposts_per_pageに変えただけ)
僕の環境では、「1ページに表示する最大投稿数 」を「10」にしていても「10」以上表示されちゃったのでもしかしたらfunction.php側でなにか書いちゃってるかも…

めったに使わないけど、同ページ内で1番最初の記事は記事の中身をまんま表示して2番目以降は過去記事としてリンクだけ出力をしたかった時のメモ、1番最初の記事表示はこの記事内で紹介していませんのであしからず、あくまでも2番目以降