WordPress Tips

WordPress カテゴリー別の記事一覧を表示する

2015-05-26

本記事にはプロモーションが含まれています。

WordPress カテゴリー別の記事一覧を表示する

カテゴリー内の記事リストを表示することは、トップページの新着記事とかサイドバーとか、使う機会がが多いです。

特定のカテゴリーの記事一覧を表示する例

カテゴリーID:5の記事を10件表示する

get_postsで特定のカテゴリーに属する記事を取得します。

$args = array(
	'posts_per_page'=> 10,
	'category'=> 5
);
$myposts = get_posts( $args );
if( ! empty( $myposts ) ){
	$html = '<ul>';
	foreach ( $myposts as $post ){
		$html .= '<li><a href="' . get_permalink( $post->ID ) . '">'
		. $post->post_title . '</a></li>';
	}
	$html .= '<ul>';
}

[解決済み] [閉] 特定のカテゴリーの記事一覧を表示したい。 (6 件の投稿)
http://ja.forums.wordpress.org/topic/154?replies=6

あらかじめ表示させたいカテゴリが決まっている場合はこれでOKですね。
でも、今後増えるカテゴリーについても自動で表示させたい場合は、ちょっとこれだと難しいです。

カテゴリ毎の記事一覧を表示

カテゴリーごとに記事一覧を表示させる、カテゴリが増えても自動で表示させる場合。

<?php
$categories = get_categories();
foreach($categories as $category):
?>
<h2><a href="<?php echo esc_url(get_category_link($category->term_id)); ?>"><?php echo $category->name; ?></a></h2>
    <?php
        $args = array(
                'cat' => $category->term_id,
                'posts_per_page' => 10,
            ));
        $the_query = new WP_Query($args);
        if ($the_query->have_posts()):
    ?>
        <ul>
        <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
            <li><a href="<?php echo get_permalink( $post->ID ); ?>"><?php echo $post->post_title; ?></a></li>
        <?php endwhile; ?>
        </ul>
    <?php wp_reset_postdata(); ?>
    <?php else: ?>
        <p>投稿はありません。</p>
    <?php endif; ?>
    <?php endforeach; ?>

特定カテゴリの記事リストのショートコードを作成してウィジェットに設置

特定のカテゴリーに属する記事(例ではnews,items)、最新5件をサイドバーウィジェットに表示したい場合。

if ( ! function_exists( 'dis_catposts_func' ) ){
	function disp_catposts_func($atts) {
		$args = array(
			'category_name'=> 'news,items',
			'post_status' => 'publish',
			'posts_per_page' => 5,
			'orderby'     => 'desc'
		);
		$the_query = new WP_Query($args);
		$html = '';
		if($the_query->have_posts()):
			$html = '<ul class="categ-recent-posts">';
			while($the_query->have_posts()):
				$the_query->the_post();
				$post_image     = get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'class' => 'categ-ph' ) );
				$html .= '<li>
				<a href="' . get_permalink( $post->ID ) . '" >' . $post_image . '<br>'
				 . get_the_title( $post->ID ) . '</a>
				</li>';
			endwhile;
			wp_reset_postdata();
			$html .= '</ul>';
		endif;
		return $html;
	}
	add_shortcode( 'disp_catposts', 'disp_catposts_func' );
}

ウィジェットでショートコードを使うには以下のコードをfunctions.phpに記載するのを忘れずに。

//ウィジェットでショートコードを使えるようにする
add_filter('widget_text', 'do_shortcode' );

関数リファレンス/WP Query
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query

テンプレートタグ/get posts
http://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_posts

カテゴリに関連づけられた記事を表示したいときに使うパラメーター

カテゴリー関連のパラメータ

$args = array(
 'cat' => 5,  //整数int、カテゴリID
 'category_name'=> 'info,item', //文字列string、カテゴリースラッグ
 'category__and' => array( 1, 3 ), //配列array、カテゴリID
 'category__in' => array( 1, 3 ), //配列array、カテゴリID
 'category__not_in' => array( 1, 3 )  //配列array、カテゴリID
);

cat(整数)

カテゴリIDを指定する。

'cat' => 5,

除外したいカテゴリを指定するには-をつける。

'cat' => -7,

category_name(文字列)

カテゴリスラッグを指定する。

'category_name'=> 'info',

カテゴリスラッグを複数指定する。

カテゴリinfoまたはitemのいずれかに属する指定。

'category_name'=> 'info,item', 

カテゴリinfo,itemどちらにも属する記事を指定。をつける。

'category_name'=> 'info+item', 

category__in(配列)

カテゴリID (子カテゴリは含まない)記事を表示する。

'category__in' => 3,

カテゴリ1と3のいずれかに属する(小カテゴリ は含まない)記事を表示する。

'category__in' => array( 1, 3 ) ,

category__and(配列)

カテゴリ1と3の両方に属する記事を表示する。

'category__and' => array( 1, 3 ),

category__not_in(配列)

カテゴリ1と3に属さない記事を表示する。

'category__not_in' => array( 1, 3 ) ,

今月キャンペーン特典があるサービス

  • エックスサーバー
    利用料最大30%キャッシュバッグ月額693円&ドメイン永久無料 - 2024年5月1日(水)12:00まで
  • ConoHa WING
    WINGパック36ヶ月で月額678円 53%OFF ドメイン2個無料 - 2024年4月19日(金)16:00まで
  • カラフルボックス
    ドメイン永久無料特典とBOX2以上の月額費用が50%OFFのクーポンコード「SERVER50

-WordPress Tips