WordPressの関数get_posts() で指定したカテゴリーの記事情報を出力する方法
はじめに
WPの出力記事を絞り込む方法は、WP_Queryとget_posts()があります。
この記事ではget_posts()で絞り込む方法を紹介します。
全体の流れ
- 指定したいカテゴリーのIDを調べる
- カテゴリースラッグを取得する
- 引数にカテゴリースラッグを指定する
- 関数get_posts()を使用する
- タイトルやサムネ画像などの出力したい記事情報を表示させる
指定したいカテゴリーの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'); ?>
以下のように画面に表示されます。
コメントを残す