wordpressで現在のページのターム情報を取得する方法まとめ

Pocket

wordpressでは標準で用意されている投稿や固定ページからの記事の投稿だけでなく、独自に投稿タイプやカテゴリーを追加することができます。

それぞれ、異なるレイアウトのテンプレートを利用したり、カスタムフィールドを使って不動産情報のような記事ごとに固定の入力項目を追加することも可能。

ここでは現在表示中のページのカスタムタクソノミー(独自カテゴリー)のターム(項目)の取り出し方を紹介します。

ターム名などの情報を取得する方法

ターム情報の取得

現在のページのターム情報を取得するには以下のタグを使用します。

<?php wp_get_object_terms( $object_ids, $taxonomies, $args ) ?>

$object_idsには$post->IDを入れ、$taxonomiesにはタクソノミー名を入れます。$argsは以下のように指定、記述しなくてもOKです。

<?php
    $args = array(
      'orderby'        => 'count',
      'order'          => 'DESC',
      'fields'         => 'all' 
    ); 
?>

指定できる細かい内容はこちらの公式codexを参照して下さい。

ターム情報の出力

取得した情報を出力します。取り出せる項目はnameやslugなど以下の通り。

  • term_id
  • name
  • slug
  • term_group
  • term_taxonomy_id
  • taxonomy
  • description
  • parent
  • count

出力するには配列の状態で

$term_id=$terms[0]->term_id;

とするか、以下のようにforeach文で出力します。

<?php

//記事IDとタクソノミーを指定してタームを取得
$product_terms = wp_get_object_terms($post->ID, 'product');

//タームを出力
if(!empty($product_terms)){
  if(!is_wp_error( $product_terms )){
    foreach($product_terms as $term){
      echo '<p>'.$term->name.'</p>'; 
    }
  }
}

?>

タームのリンクを取得する方法

リンクURLを取得するにはこちらのタグを使用します。

<?php get_term_link( $term, $taxonomy ); ?> 

$termにはtermのオブジェクトかterm_idもしくはslugを入力。$taxonomyはタクソノミーのslugを入力します。返り値はタクソノミーアーカイブへのURLリンクとなります。

さきほどの例を使用するとこんな感じ。

<?php

//記事IDとタクソノミーを指定してタームを取得
$product_terms = wp_get_object_terms($post->ID, 'product');

//タームとURLを出力
if(!empty($product_terms)){
  if(!is_wp_error( $product_terms )){
    echo '<ul>';
    foreach($product_terms as $term){
      echo '<li><a href="'.get_term_link($term->slug, 'product').'">'.$term->name.'</a></li>'; 
    }
    echo '</ul>';
  }
}

?>

wordpressのためのPHPスキル

ここで紹介したようなPHPコードはやや難解で、慣れないうちはどうやって動いてるのかわかない!とう状態に陥ります。

僕自身も大変苦労した記憶があるのですが、最近とてもすばらしい本が出版されました。とくにPHP初心者の方はまずこれを読んでwordpressで使うPHPのスキルアップをオススメします。