《WordPress》投稿記事ページに投稿記事と同じカテゴリの新着リストを表示する

更新日:2022年3月19日

投稿記事の下に同じカテゴリの新着5件とかを表示したい。

アイキャッチとかはいらないので、テキストだけでさらっとできないかな。

できた。

さらっとではないけど。

記事ページのテンプレート(○○.php)に書く

<?php
$post_id = get_the_ID();
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
query_posts(
array(
'cat' => $cat_id,
'showposts' => 5, //5件表示するから5って書く
'post__not_in' => array($post_id)
)
);
if(have_posts()) :
?>
<ul> <!--リストタグで表示させる-->
	<?php while (have_posts()) : the_post(); ?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <!--タイトルにリンク付きで表示-->
	<?php endwhile; else: ?>
	<li>記事がなかったときはこれが表示される</li>
	<?php endif; ?>
</ul>
<?php wp_reset_query(); ?>

自分のページに合わせて体裁を整えてみる

<div class="クラス名"> <!--全体をdivで囲っておく-->
<h3><?php the_category(' | '); ?>の最新5件</h3> <!--タイトルなんかを付けてみる-->
<?php
$post_id = get_the_ID();
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
query_posts(
array(
'cat' => $cat_id,
'showposts' => 5, //5件表示でOK
'post__not_in' => array($post_id)
)
);
if(have_posts()) :
?>
<ul>
	<?php while (have_posts()) : the_post(); ?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php endwhile; else: ?>
	<li>このカテゴリの記事はまだ追加されていません。</li> <!--もっともらしいコメントにする-->
	<?php endif; ?>
</ul> <!--ulタグを忘れず閉じる-->
<?php wp_reset_query(); ?>
</div> <!--divタグを忘れず閉じる-->

全体をdivで括ったのは、後々デザイン変更するとき便利だなぁと思ったから。


どうやら、通常は投稿記事ページのテンプレート「single.php」とやらがあるらしい。

カスタマイズするのに適したテーマというのもあるらしい。

自分の使ってるテーマには「single.php」なんてもの存在してない。

そういうこともある。

カスタマイズする気もなかったので、気に入ったテーマ使ってた。

ところが、複雑な構造で作られてるテーマを選んでたみたい。

逆に言えば、カスタマイズしなくていいように作られたもの。

それでも、使っていくうち、こうしたいという希望がでてくる。

出てくるんだわ。

テンプレートを特定。

さて、テンプレートの特定はできたけど、記事ページ専用じゃない。

ここに書いたものは、トップページにもカテゴリページにも表示されとる。

をぃ!(汗)

一瞬トップページの記事一覧がボロボロな表示になったので焦った。

なので記事ページだけに出るように条件分岐を追加。

<?php if ( is_single() ) : ?>
記事ページだけに表示させてくだされ。
<?php endif; ?>

やっと言うこと聞いてくれた。


解決

教訓:テーマによって記事ページの表示されるテンプレートが違ったりする

 
 

にほんブログ村 料理ブログへ

にほんブログ村 料理ブログ 簡単お弁当へ

にほんブログ村 料理ブログ 節約お弁当へ

 
 
記事の公開日:2022年3月18日
この勉強部屋はお料理には全く関係ない趣味のページです。
お料理ブログへは下のカテゴリからどうぞ。