制作の現場から  
  ワードプレスで記事の属するカテゴリーから特定のカテゴリーを除外したリンク付き一覧を作成する方法
2019
20
Jan

ワードプレスで記事の属するカテゴリーから特定のカテゴリーを除外したリンク付き一覧を作成する方法

表題の通りです。

ワードプレスで記事の属するカテゴリーから特定のカテゴリーを除外したリンク付き一覧を作成する方法

今回の場合は表示する法のカテゴリーが少なかったのでINを使いました。
除外するカテゴリーの方が少なければNOT IN を使います。

副問い合わせをする場合はNOT INには注意が必要です。代わりにNOT EXISTの使用を検討します。

sql


$sql = "
	SELECT DISTINCT terms.name,terms.term_id
	FROM $wpdb->posts as posts
	JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID
	JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id
	JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id
	WHERE posts.ID = %d AND tax.taxonomy = 'category' AND terms.term_id IN(5, 6, 7, 8)
	ORDER BY terms.term_id ASC
";
$categories = $wpdb->get_results($wpdb->prepare($sql, $post->ID));

カテゴリーリンク一覧


foreach ( $categories as $cat ){
	echo '<a href="'.get_category_link( $cat->term_id ).'">'.$cat->name.'</a>' ;
}

もっと簡単に、関数がありました。以下は全体のカテゴリー一覧であり記事の属するカテゴリー一覧では使えません。


$args = array(
	'exclude' => '', //ここに除外したいカテゴリーのIDをカンマ区切りで入れる。
);
wp_list_categories( $args );

記事の属するカテゴリー一覧には the_catrgory() または get_the_category() を使いますが、特定のカテゴリーを除外するパラメーターは用意されていません。

ですので今回のコードは役に立ちます。

同じテーマで別サイトを作る場合などid で指定してしますと何らかの手違いで id が変わってしまうかも知れません。

除外するカテゴリーを id ではなくslug で指定することでこのような面倒にも巻き込まれなくて済むのです。

面倒なので書き換えませんが、上記コードは id で指定していますので slug で書き換えが必要です。

 

top