WordPressで固定ページに投稿ページ一覧を表示する方法
トップページのindex.php
ではなく、固定ページを表示するpage.php
に投稿ページ一覧を表示する方法です。
固定ページに投稿ページのデータを表示する場合、投稿データを処理するためにサブループを使用する必要があります。
投稿ページ一覧を表示する
投稿ページの一覧を表示するために下記をpage.php
に記入します。
<ul>
<?php
$args = array( 'posts_per_page' => -1 );
$my_posts = get_posts( $args );
if ( $my_posts ) :
global $post;
foreach ( $my_posts as $post ): setup_postdata( $post );
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
endforeach;
endif;
wp_reset_postdata();
?>
</ul>
$args
に取得する投稿の条件を記入します。条件を設定するパラメータについては後ほど記載します。
get_posts()
で投稿データを取得して、foreach
のループで投稿データを表示しています。
if
で取得の有無を判定しているので、条件に合う投稿が取得されなかった場合にelse
でエラーを表示することも可能です。
パラメータを設定する
$args
にパラメータで条件を設定することで、取得する投稿を制御することができます。
上記では、全ての投稿を表示させていので'posts_per_page' => -1
を設定しています。posts_per_page
が取得する投稿の件数を制御していますが、未設定の場合デフォルトの「5件」で取得されます。
よく使うパラメータには下記のような種類があります。
‘posts_per_page’ => 5
1ページに表示する記事の件数を設定します。
‘order’ => ‘DESC’
ソート順(ASCかDESC)を設定します。
‘orderby’ => ‘date’
ソート順の対象(date、category、title、randなど)を設定します。
‘post_type’ => ‘post’
取得する投稿の種類(post、pageなど)を設定します。
‘post_status’ => ‘publish’
取得する投稿のステータス(公開状態かどうか)を設定します。
‘category’ => ”
設定したカテゴリーIDで取得します。複数の場合は「,(カンマ)」で区切ります。除外したいカテゴリーは、カテゴリーIDの先頭に「-(ハイフン)」 を付けます。
‘category_name’ => ”
設定したカテゴリースラッグで取得します。
‘include’ => ”
設定した投稿IDで取得します。複数の場合は「,(カンマ)」で区切ります。
‘exclude’ => ”
除外する投稿IDを設定します。複数の場合は「,(カンマ)」で区切ります。
‘post_parent’ => ”
設定した親の投稿IDで取得します。複数の場合は「,(カンマ)」で区切ります。
例えば、アルファベット順に昇順で最近の 10 件を表示するには、以下のコードで表示します。
<?php
$args = array(
'posts_per_page' => 10,
'order' => 'ASC',
'orderby' => 'title'
);
?>
パラメータを設定することで表示する投稿ページの種類や表示順を制御することができました。