サポート » 使い方全般 » 新着記事の表示方法について

  • 解決済 kzksai

    (@kzksai)


    <?php
    // 各カテゴリからデータの所得とソート
    	$catList = array(2,3,6);
    //投稿のカテゴリを取得
    	$categories = get_categories('include=2,3,6');
    //スラッグだけ取り出す
    	foreach ($categories as $category) {
    		$class []= $category->slug;
    	}
    
    //各カテゴリの最新の記事1件を取り出す
    	foreach ($catList as $val) {
      		$id = $val;
      		if(is_object($id)) : $id = $val->cat_ID; endif;
      		$resPost = get_posts('numberposts=1&category='.$id.'&orderby=post_date');
    
    			foreach ($resPost as $post) {
    					$resArr []= $post;
    										}
    								}
    
    ?>
    
    <h3>新着情報</h3>
    <ul>
    <?
    	foreach($resArr as $post):
    	setup_postdata($post);
    ?>
    <?php the_date(); ?><span class="<em>ここにslugを入れたい</em>"></span>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>

    上記コードの<span>にスラッグ名でクラスを付けたいのですが、どうゆう書き方をすれば可能でしょうか?
    表示させたい場所はサイドバーになります。

    どなたかおしえてください。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    念のための確認ですが、「スラッグ」はカテゴリーのスラッグのことを指していますか。
    投稿の post_name もスラッグと言われますので、明確に指定された方が間違いがありません。

    カテゴリーのスラッグであるとして、基本的に上記のコードだと、2, 3, 6 のカテゴリーID順にカテゴリーの最新記事を1件づつ表示するようになりますので、以下のように新着情報の日付が前後する可能性があります。

    • カテゴリーID 2の最新投稿(例えば、6月12日公開)
    • カテゴリーID 3の最新投稿(例えば、6月17日公開)
    • カテゴリーID 6の最新投稿(例えば、6月14日公開)

    これを防ぎたいのであれば、投稿の配列を公開日をキーとした配列に格納して krsort で並びかえを行うか、表示する投稿のIDのみを取得し、それを get_posts の include で指定して、公開日順に取得し直すかになります。

    カテゴリーのスラッグの出力については、最新記事を表示する際のループ内で、get_the_category にてカテゴリーを取得するのが一番簡単です。

    トピック投稿者 kzksai

    (@kzksai)

    >>jim912さん
    ありがとうございます。

    念のための確認ですが、「スラッグ」はカテゴリーのスラッグのことを指していますか。
    投稿の post_name もスラッグと言われますので、明確に指定された方が間違いがありません。

    はい、
    カテゴリースラッグになります。

    カテゴリーのスラッグであるとして、基本的に上記のコードだと、2, 3, 6 のカテゴリーID順にカテゴリーの最新記事を1件づつ表示するようになりますので、以下のように新着情報の日付が前後する可能性があります。

    カテゴリーの順番は固定で行きたいのでこのままで大丈夫です。

    カテゴリーのスラッグの出力については、最新記事を表示する際のループ内で、get_the_category にてカテゴリーを取得するのが一番簡単です。

    ループ内で取得すれば良かったんですね、どうしてもループ外で考えてしまっていました。

    <?php
    // 各カテゴリからデータの所得とソート
    	$catList = array(2,3,6);
    
    //各カテゴリの最新の記事1件を取り出す
    	foreach ($catList as $val) {
      		$id = $val;
      		if(is_object($id)) : $id = $val->cat_ID; endif;
      		$resPost = get_posts('numberposts=1&category='.$id.'&orderby=post_date');
    
    			foreach ($resPost as $post) {
    					$resArr []= $post;
    										}
    								}
    ?>
    
    <h3>新着情報</h3>
    <ul>
    <?
    	foreach($resArr as $post):
    	setup_postdata($post);
    
    	$categories = get_the_category();
    	foreach($categories as $category){ $class= $category->slug; }
    ?>
    <div class="<?php echo$class; ?>"><?php the_time(Y年n月d日); ?></div>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>

    これでやってみたところうまく表示することが出来ました。
    ありがとうございます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「新着記事の表示方法について」には新たに返信することはできません。