
WordPressのグーテンベルクのクエリーループブロックは便利だけど、カテゴリーごとにカテゴリー名が色変えできたらいいなと思ってjQueryを使用した。
そのうちWordPress公式がスラッグをclass属性として付与、とかになってくれたらいいなの希望もこめて覚書。
前提
クエリーループブロックを使う
[クエリーループブロック]-[投稿テンプレート]内に[カテゴリー]ブロックを追加する
これでクエリーループを使って記事一覧ページを作る際に、記事ごとの選択カテゴリーも表示されるようになる。
jQuery( function( $ ) {
//カテゴリーがマッチしたらクラスを付与
jQuery.each({
"ニュース":"news",
"イベント":"event",
"お知らせ":"topics",
"各種情報":"info",
},function(i,j){
$('.taxonomy-category a').filter(function(){return $(this).html()==i}).addClass(j);
});
});
カテゴリーブロックには各カテゴリーのaタグをつつむ、taxonomy-category wp-block-post-termsというクラスを付与されたdiv要素があります。(ちょっと説明下手かも)
なので上のjQueryでは、taxonomy-category以下のaタグの文字列(ここではカテゴリー名)が「ニュース」だったら、そのaタグにnewsというクラス属性を追加する、といった感じ。
"aタグ内の文字列":"class名", で設定しています。
実際のソースコードは下記。
<div class="taxonomy-category wp-block-post-terms"> <a href="https://example.com/topics" rel="tag" class="topics">お知らせ</a><span class="wp-block-post-terms__separator"> </span> <a href="https://example.com/info" rel="tag" class="info">カテゴリー名</a> </div>
span.wp-block-post-terms__separatorはカテゴリーブロックの設定にある、カテゴリーとカテゴリーの間を仕切るものになります。(今回は空白)
あとはCSSのほうでカテゴリー別の色を設定してデザイン調整すればOK