2022.5.12|WordPress

WordPress(ワードプレス)でカスタム投稿タイプで投稿した記事に属しているカテゴリー(ターム)に条件を指定して表示する方法

WordPress(ワードプレス)でカスタム投稿タイプで投稿した記事に属しているカテゴリー(ターム)に条件を指定して表示する方法

WordPress(ワードプレス)で、カスタム投稿タイプを利用して記事を投稿した場合、記事の一覧ページや記事の詳細ページので記事に属しているカテゴリー情報を取得して表示することができます。

今回は、WordPress(ワードプレス)でカスタム投稿タイプで投稿した記事に属しているカテゴリー(ターム)に条件を指定して表示する方法を解説します。

カスタム投稿タイプとは

カスタム投稿タイプとは、WordPress(ワードプレス)に標準の機能として用意されている「投稿」や「固定ページ」と異なり、独自で「投稿タイプ」を追加して「投稿」機能と同じように利用できる機能です。独自で投稿タイプを追加した機能のことを「カスタム投稿タイプ」と呼びます。
例えば、標準で用意されている「投稿」機能はブログに利用し、新しく「カスタム投稿タイプ」を追加してお知らせの情報を投稿していくように新しいコンテンツを追加することができます。

WordPress(ワードプレス)でカスタム投稿タイプで投稿した記事に属しているカテゴリー(ターム)に条件を指定して表示する方法

カスタム投稿タイプで投稿した記事に属しているカテゴリー(ターム)に条件を指定して表示する方法

カスタム投稿タイプを追加して投稿した記事に属しているカテゴリー(ターム)を表示する場合は、3つのテンプレートタグ・関数があります。
WordPressの「テーマ」ファイルから投稿記事のカテゴリー(ターム)を表示したいテンプレートファイルを探します。テンプレートファイルを開き、記事に属しているカテゴリー(ターム)情報を取得するテンプレートタグ・関数を記述することで実装ができます。

【カテゴリー(ターム)を出力するテンプレートタグ・関数】
・get_terms
・get_categories
・wp_list_categories

「get_terms」を使ってカテゴリー(ターム)表示

「get_terms」を使ってカテゴリー(ターム)表示をする場合、パラメータ(Parameter)で条件を指定することで表示内容や表示方法を変更できます。

基本パラメータ
<?php 
// タクソノミーにはデフォルト値がないので下記を例として使う。
$taxonomies = array( 
    'post_tag',
    'my_tax',
);

$args = array(
    'orderby'       => 'name', 
    'order'         => 'ASC',
    'hide_empty'    => true, 
    'exclude'       => array(), 
    'exclude_tree'  => array(), 
    'include'       => array(),
    'number'        => '', 
    'fields'        => 'all', 
    'slug'          => '', 
    'parent'        => '',
    'hierarchical'  => true, 
    'child_of'      => 0, 
    'childless'     => false,
    'get'           => '', 
    'name__like'    => '',
    'description__like' => '',
    'pad_counts'    => false, 
    'offset'        => '', 
    'search'        => '', 
    'cache_domain'  => 'core'
); 

$terms = get_terms( $taxonomies, $args );
?>
テンプレートタグ(リンク無し)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。

<?php
$terms = get_terms('category'); // タクソノミースラッグを指定
foreach( $terms as $term ) {
echo '<li>'.$term->name.'</li>';
}
?>
テンプレートタグ(リンク付き)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。

<?php
$terms = get_terms('category'); // タクソノミースラッグを指定
foreach ( $terms as $term ) {
echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
}
?>
テンプレートタグ(リンク付き・件数)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※件数表示には「count」パラメータを追加します。

<?php
$terms = get_terms('category'); // タクソノミースラッグを指定
foreach ( $terms as $term ){
echo '<li><a href="'.get_term_link($term).'">'.$term->name.'('. $term->count .')'.'</a></li>';
}
?>
テンプレートタグ(子カテゴリーのみ)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※「parent」パラメータに表示したい子カテゴリーの「親カテゴリーID」を記述します。

<?php
$args = array(
'parent' => 親カテゴリーID,
);
$terms = get_terms( 'category', $args ); // タクソノミースラッグを指定
foreach ( $terms as $term ) {
echo '<li><a href="' . get_term_link($term) . '">' . $term->name . '</a></li>';
}
?>

「get_categories」を使ってカテゴリー(ターム)表示

「get_categories」を使ってカテゴリー(ターム)表示をする場合、パラメータ(Parameter)で条件を指定することで表示内容や表示方法を変更できます。

基本パラメータ
<?php 
$args = array(
	'type'                     => 'post',
	'child_of'                 => 0,
	'parent'                   => '',
	'orderby'                  => 'name',
	'order'                    => 'ASC',
	'hide_empty'               => 1,
	'hierarchical'             => 1,
	'exclude'                  => '',
	'include'                  => '',
	'number'                   => '',
	'taxonomy'                 => 'category',
	'pad_counts'               => false 
); 
?>
テンプレートタグ(リンク無し)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。

<?php
$args = array(
'taxonomy' => 'category' // カスタムタクソノミースラッグを指定
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<li>'.$category->name.'</li>';
}
?>
テンプレートタグ(リンク付き)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。

<?php
$args = array(
'taxonomy' => 'category' // カスタムタクソノミースラッグを指定
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<li><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a></li>';
}
?>
テンプレートタグ(リンク付き・件数)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※件数表示には「count」パラメータを追加します。

<?php
$args = array(
'taxonomy' => 'category', // カスタムタクソノミースラッグを指定
);
$categories = get_categories($args);
foreach( $categories as $category ) {
echo '<li><a href="'.get_category_link($category->term_id).'">'.$category->name.'('.$category->count.')'.'</a></li>';
}
?>
テンプレートタグ(子カテゴリーのみ)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※「parent」パラメータに表示したい子カテゴリーの「親カテゴリーID」を記述します。

<?php
$args = array(
'taxonomy' => 'category' // カスタムタクソノミースラッグを指定
'parent' => '親カテゴリーID',
);
$categories = get_categories($args);
foreach($categories as $category) {
echo '<li><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a></li>';
}
?>

「wp_list_categories」を使ってカテゴリー(ターム)表示

「wp_list_categories」を使ってカテゴリー(ターム)表示をする場合、パラメータ(Parameter)で条件を指定することで表示内容や表示方法を変更できます。

基本パラメータ
<?php 
    $args = array(
	'show_option_all'    => '',
	'orderby'            => 'name',
	'order'              => 'ASC',
	'style'              => 'list',
	'show_count'         => 0,
	'hide_empty'         => 1,
	'use_desc_for_title' => 1,
	'child_of'           => 0,
	'feed'               => '',
	'feed_type'          => '',
	'feed_image'         => '',
	'exclude'            => '',
	'exclude_tree'       => '',
	'include'            => '',
	'hierarchical'       => 1,
	'title_li'           => __( 'Categories' ),
	'show_option_none'   => __( '' ),
	'number'             => null,
	'echo'               => 1,
	'depth'              => 0,
	'current_category'   => 0,
	'pad_counts'         => 0,
	'taxonomy'           => 'category',
	'walker'             => null
    );
    wp_list_categories( $args ); 
?>
テンプレートタグ(リンク付き)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。

<?php wp_list_categories( array('title_li' => '', 'taxonomy' => 'category' ) ); ?> // カスタムタクソノミースラッグを指定
テンプレートタグ(リンク付き・件数)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※件数表示には「show_count」パラメータを追加します。

<?php wp_list_categories( array('title_li' => '', 'show_count' => '1', 'taxonomy' => 'category' ) ); ?> // カスタムタクソノミースラッグを指定
テンプレートタグ(子カテゴリーのみ)

※「category」部分にはカスタム投稿タイプの「タクソノミースラッグ」を指定します。
※「child_of」パラメータに表示したい子カテゴリーの「親カテゴリーID」を記述します。

<?php wp_list_categories( array('title_li' => '', 'child_of' => '親カテゴリーID', 'taxonomy' => 'category' ) ); ?> // カスタムタクソノミースラッグを指定

まとめ

WordPress(ワードプレス)で利用するテンプレートタグや条件分岐タグは種類が沢山あります。情報を取得する意味としては少しづつ異なるので、何かを指定して表示させる方法は少しづつでも覚えておくと良いです。
また、パラメーターの種類もテンプレートタグによって使えるパラメータ使えないパラメータがありますので、利用頻度の高いパラメータだけでも理解しておけば必要な時にすぐに思い出すて利用できます。