WordPress 自分メモ – archive.phpのカンニングらくがき

前提
| 投稿 ラベル「投稿」 スラッグ「post」 └category └カテゴリー名「未分類」 カテゴリースラッグ「nocategory」 カテゴリーID「1」 |
カスタム投稿 ラベル「お知らせ」 スラッグ「topics」 └topics_cat └ターム名「スケジュール」 タームスラッグ「schedule」 タームID「3」 |
※人によっては「topics_cat」じゃなくて「topics_category」だったりするかと思うので、いい感じに該当箇所書き換えてください。
$thisterm = get_queried_object();
if(is_category()) {
$thistax = $thisterm->taxonomy;
$thispt = 'post';
$thisp_slug = $thisterm->slug;
$thispt_label = esc_html(get_post_type_object(get_post_type())->label);
$thispt_slug = esc_html(get_post_type_object(get_post_type())->name);
$thisp_label = $thisterm->name;
$thisp_id = $thisterm->term_id;
} else if(is_tax()) {
$thistax = $thisterm->taxonomy;
$getthispt = explode('_', $thistax);
$thispt = $thispt[0];
$thisp_slug = $thisterm->slug;
$thispt_label = esc_html(get_post_type_object(get_post_type())->label);
$thispt_slug = esc_html(get_post_type_object(get_post_type())->name);
$thisp_label = $thisterm->name;
$thisp_id = $thisterm->term_id;
} else {
$thispt = $thisterm->name;
$thistax = $thispt == 'post' ? 'category' : $thispt .'_cat' ;
$thisp_slug = $thispt;
$thispt_label = esc_html(get_post_type_object(get_post_type())->label);
$thispt_slug = esc_html(get_post_type_object(get_post_type())->name);
$thisp_label = $thispt_label;
}
echo $thispt;
| is_category | post |
| is_tax | topics |
| else | post or topics |
echo $thispt_label;
| is_category | 投稿 |
| is_tax | お知らせ |
| else | 投稿 or お知らせ |
echo $thispt_slug;
| is_category | post |
| is_tax | topics |
| else | post or topics |
echo $thisp_label;
| is_category | 未分類 |
| is_tax | スケジュール |
| else | 投稿 or お知らせ |
echo $thisp_slug;
| is_category | nocategory |
| is_tax | schedule |
| else | post or topics |
echo $thistax;
| is_category | category |
| is_tax | topics_cat |
| else | category or topics_cat |
カテゴリー・ターム内のみ
echo $thisp_id;
| is_category | 1 |
| is_tax | 3 |
$thispt = ‘post’; などなど、あんまり改めて書く意味のないものもちょいちょいありますが、念のため。
これで何をしたいか
<h2><?=$thispt_label?>のカテゴリ一覧</h2>
<?php
$terms = get_terms($thistax);
foreach($terms as $term) {
echo '<a href="'.get_term_link($term->slug, $thistax).'">'.$term->name.'</a>';
}
?>
とか。使い方も人生もいろいろ。



