2017.10.30WEB - WordPress

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>';
}
?>

とか。使い方も人生もいろいろ。