WordPressに関する情報や技術紹介です

親カテゴリに属するサブカテゴリのIDを取得する関数

以前、サブカテゴリ毎に記事をまとめて表示2という記事を書きましたが、少し需要があるようなのでもう少しスマート(だと思える)取得をしてみます。

といっても「怪しい正規表現」から「データベースで直接取得」に変わっただけですけど。

WordPress サブカテゴリのIDを取得する関数

下記の関数をfunctions.php辺りに入れておけばいつでも使えます。

// サブカテゴリIDを取得する関数
function get_subcat_id( $cat_id = null ) {
	global $wpdb;

	if($cat_id == null) return false;

	// サブカテゴリを取得
	$sub_cat = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM $wpdb->term_taxonomy WHERE parent=%d", $cat_id));
	return $sub_cat;
}
WordPress サブカテゴリのIDを取得する関数

取得できるのは直下のサブカテゴリのみです。
使用方法としては、以下のように使えます。

<?php
// サブカテゴリのIDを取得(親カテゴリのIDを5とする)
$sub_cat = get_subcat_id(5);

// サブカテゴリが存在するか
if($sub_cat) {

// ループして処理
foreach($sub_cat as $id) :
?>

<h3><a href="<?php echo get_category_link($id); ?>"><?php echo get_cat_name($id); ?></a></h3>
<ul>
<?php if (have_posts()) :  query_posts("posts_per_page=5&cat=$id&orderby=ID&order=desc");  ?>
<?php while (have_posts()) : the_post(); ?>
	<li><?php the_time('y-m-d'); ?> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>

<?php
endforeach;

} else {
	echo '<p>サブカテゴリは存在しません。</p>';
}
?>
WordPress サブカテゴリのIDを取得する関数

間違いがあればご指摘下さい。

タグ
, ,
トラックバックURL

Leave a Reply

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

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ページTOPに戻る