WordPressの関数get_posts() で指定したカテゴリーの記事情報を出力する方法

はじめに

WPの出力記事を絞り込む方法は、WP_Queryとget_posts()があります。

この記事ではget_posts()で絞り込む方法を紹介します。

全体の流れ

  1. 指定したいカテゴリーのIDを調べる
  2. カテゴリースラッグを取得する
  3. 引数にカテゴリースラッグを指定する
  4. 関数get_posts()を使用する
  5. タイトルやサムネ画像などの出力したい記事情報を表示させる

指定したいカテゴリーのIDを調べる

WP管理画面の「カテゴリーを編集」に「tag_ID=98」とあります。ここに書かれている数字がカテゴリーIDです。

カテゴリースラッグを取得する

関数get_categoriesでカテゴリー情報を取得する

まずは、関数get_categoriesの引数にカテゴリーIDを渡して、カテゴリー情報を取得したものを、変数$categoriesに入れます。

$categories = get_categories(array(
 'include' => 98
));

foreach文でカテゴリースラッグを取得する

次に、foreach文で変数$categoriesを$categoryとして使用し、スラッグの情報を$cat_slugに入れます。

foreach ($categories as $category) {
 $cat_slug = $category->slug;
}

引数にカテゴリースラッグを指定する

指定したカテゴリーのスラッグが入っている$cat_slugを、category_nameの値として指定したものを、変数$argsに入れます。

$args = array('category_name' => $cat_slug);

関数get_posts()を使用する

<?php
  $args = array('category_name' => $cat_slug);
  $myposts = get_posts($args);
  foreach ($myposts as $post) : setup_postdata($post);
?>

// この中で記事情報を出力させる処理を書く
            
<?php endforeach; wp_reset_postdata(); ?>

STEP1

関数get_postsの引数に、先ほどカテゴリースラッグを指定した$argsを指定したものを、変数$mypostsに入れます。

<?php
  $args = array('category_name' => $cat_slug);
  $myposts = get_posts($args);
  foreach ($myposts as $post) : setup_postdata($post);
?>

// この中で記事情報を出力させる処理を書く
            
<?php endforeach; wp_reset_postdata(); ?>

STEP2

foreach文で$mypostsを$postとして使用していきます。

<?php
  $args = array('category_name' => $cat_slug);
  $myposts = get_posts($args);
  foreach ($myposts as $post) : setup_postdata($post);
?>

// この中で記事情報を出力させる処理を書く
            
<?php endforeach; wp_reset_postdata(); ?>

STEP3

投稿データのセットアップとリセットを行います。

<?php
  $args = array('category_name' => $cat_slug);
  $myposts = get_posts($args);
  foreach ($myposts as $post) : setup_postdata($post);
?>

// この中で記事情報を出力させる処理を書く
            
<?php endforeach; wp_reset_postdata(); ?>

タイトルやサムネ画像などの出力したい記事情報を表示させる

先ほどのコメントアウトの部分で、タイトルやサムネイル画像、投稿日などの出力させたい情報を出力するためのWP関数を使用します。

// タイトル
<?php the_title(); ?>

// サムネイル画像
<?php
if (has_post_thumbnail()) {the_post_thumbnail('full', ['class' => 'blog-list-scroll__img']);
} else {
?>
 <img class="blog-list-scroll__img" src="<?php echo get_template_directory_uri(); ?>/assets/img/blog/no-image.png" alt="no-image" />
<?php } ?>

// 投稿日
<?php echo get_the_date('Y.m.d'); ?>

サムネ画像

サムネが設定されている場合は、サムネを表示させる。そうでない(サムネが設定されていない)場合は、no-image画像を表示させるという条件分岐を書いています。

// サムネイル画像
<?php
if (has_post_thumbnail()) {the_post_thumbnail('full', ['class' => 'blog-list-scroll__img']);
} else {
?>
 <img class="blog-list-scroll__img" src="<?php echo get_template_directory_uri(); ?>/assets/img/blog/no-image.png" alt="no-image" />
<?php } ?>

the_post_thumbnailの引数

関数the_post_thumbnailは、設定されているサムネ画像を出力する機能を持っています。今回の引数は2つです。1つ目は画像サイズ、2つ目はクラス名を指定しました。

// サムネイル画像
<?php
if (has_post_thumbnail()) {the_post_thumbnail('full', ['class' => 'blog-list-scroll__img']);
} else {
?>
 <img class="blog-list-scroll__img" src="<?php echo get_template_directory_uri(); ?>/assets/img/blog/no-image.png" alt="no-image" />
<?php } ?>

投稿日

関数get_the_dateの引数に(‘Y.m.d’)を指定することで、日付の表示のされ方を決めています。

// 投稿日
<?php echo get_the_date('Y.m.d'); ?>

以下のように画面に表示されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です