WordPressで固定ページに投稿ページ一覧を表示する方法

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' 
  );
?>

パラメータを設定することで表示する投稿ページの種類や表示順を制御することができました。