「SWELLでカスタム投稿タイプ一覧のサムネにカスタムタクソノミーのタームを表示させたい!」
と思うことはありませんか?
そこでこの記事では、SWELLのカスタム投稿タイプの一覧にタームを表示する方法をご紹介します。
アイキャッチ画像の右上に、カテゴリーと同様にタクソノミー(ターム)を表示する。


前提条件
お使いのバージョンやプラグインの相性、すでに適用している他のカスタマイズ等によっては動作しない可能性があります。
また、カスタム投稿タイプやタームはプラグイン「Custom Post Type UI」を使用する前提とします。
ただし、自作する場合でも同じはずです。
【WordPress】6.7.2
【テーマ:SWELL】2.13.0
【プラグイン:Custom Post Type UI(CPTUI)】1.17.2
サンプル構成
以下のように、ワードプレスのデフォルトである投稿とカテゴリーの他に、CPTUIを使ってカスタム投稿とタクソノミーを2つずつ作成し、投稿タイプとタクソノミーが1対1に対応する構成で説明します。
カテゴリー(category)
タクソノミー1(taxonomy1)
タクソノミー2(taxonomy2)
CPTUIの設定 | カスタム投稿1 | カスタム投稿2 |
---|---|---|
カスタム投稿スラッグ | custom1 | custom2 |
表示タクソノミースラッグ | taxonomy1 | taxonomy2 |
functions.phpにコードを追加するだけ!
「外観」-「テーマファイルエディター」と進み、functions.phpに以下のコードを追加します。
//カスタム投稿タイプのカテゴリー表示
function swl_parts__post_list_category( $args ) {
$the_id = $args['post_id'] ?? get_the_ID();
$class = $args['class'] ?? 'p-postList__cat u-thin';
//投稿にはカテゴリーを表示(デフォルト機能)
if ( 'post' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'category' );
}
//カスタム投稿1にはタクソノミー1を表示
else if ( 'custom1' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'taxonomy1' );
}
//カスタム投稿2にはタクソノミー2を表示
else if ( 'custom2' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'taxonomy2' );
}
if ( empty( $cat_data ) ) {
return;
}
// 表示するカテゴリー
$display_cat = swl_get__a_catgory( $cat_data );
$the_cat = apply_filters( 'swell_post_list_cat_data', [
'id' => $display_cat->term_id,
'name' => $display_cat->name,
], $the_id );
?>
<span class="<?=esc_attr( $class )?> icon-folder" data-cat-id="<?=esc_attr( $the_cat['id'] )?>"><?=esc_html( $the_cat['name'] )?></span>
<?php
}
処理解説
処理①
//投稿にはカテゴリーを表示(デフォルト機能)
if ( 'post' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'category' );
}
//カスタム投稿1にはタクソノミー1を表示
else if ( 'custom1' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'taxonomy1' );
}
//カスタム投稿2にはタクソノミー2を表示
else if ( 'custom2' == get_post_type() ) {
$cat_data = get_the_terms( $the_id, 'taxonomy2' );
}
投稿タイプがデフォルトの投稿(’post’)であればデフォルトのカテゴリー(’category’)を取得。
投稿タイプがカスタム投稿1(’custom1’)であればタクソノミー1(’taxonomy1’)を取得。
投稿タイプがカスタム投稿2(’custom2’)であればタクソノミー2(’taxonomy2’)を取得。
処理②
// 表示するカテゴリー
$display_cat = swl_get__a_catgory( $cat_data );
$the_cat = apply_filters( 'swell_post_list_cat_data', [
'id' => $display_cat->term_id,
'name' => $display_cat->name,
], $the_id );
<span class="<?=esc_attr( $class )?> icon-folder" data-cat-id="<?=esc_attr( $the_cat['id'] )?>"><?=esc_html( $the_cat['name'] )?></span>
処理①で取得したカテゴリーまたはタクソノミーのタームをアイキャッチ画像右上に表示する。
【ついで】個別ページのタームを装飾する
SWELLでは上記の処理を書かなくても、カスタム投稿タイプの個別ページにはタームが自動で表示されます。
ただし、装飾はされません。
例えば、下図の広告横にある「ワードプレスニュース」はタクソノミーのタームです。

これをついでに装飾してしまいましょう!
「外観」-「カスタマイズ」-「追加CSS」に以下のコードを追加します。
/* フォルダアイコンの装飾 */
.c-taxList {
color: var(--color_main);
}
/* タームラベルの装飾 */
.c-taxList__link {
background-color: var(--color_main);
color: #fff; //※
border-radius: 16px;
padding: 6px 10px;
}
※部分は文字色です。当サイトはメインカラー紺のため白文字に設定していますが、メインカラーが白系の場合は#333など黒っぽい文字色の方が見やすくなります。
また、ここでは普通のカテゴリーラベルと同じように見せるため、タームの背景色にはcolor_mainを設定しています。
カスタム投稿タイプでは色を変えたい場合は、ここでredや#123456など色コードを指定しても良いでしょう。
border-radiusとpaddingは、丸みを持たせるための設定です。
四角でも良いなら不要なので削除しても問題ありません。

コメント・ご指摘などあればこちらへ!