カスタムタクソノミー
get_termsとget_the_termsの違い
<?php get_terms($taxonomy ,$args) ?> は指定されたタクソノミーに含まれるタームをすべて取得する
<?php get_the_terms($post->ID, $taxonomy); ?> は投稿に割り当てられたタームを取得する
リンク付きでターム名を表示する
<?php
$terms = get_the_terms($post->ID, 'カスタムタクソノミー名');
if ( !empty($terms) ) {
foreach ( $terms as $term ) {
$term_link = get_term_link($term);
if ( !is_wp_error($term_link) ) {
echo '<a href="' . esc_url($term_link) . '"><span>' . esc_html($term->name) . '</span></a>';
}
}
}
?>
このコードを書いて、リンクをクリックすると404エラーが発生します
それはパーマリンク構造が正しく更新されていないためです
WordPress管理画面の[設定]->[パーマリンク]から「変更を保存」ボタンをクリックしてください(何も変更せずに保存してOK)
パーマリンク設定が再生成され、404エラーが解決します
リンク不要でターム名のみ表示
<?php
$terms = get_the_terms($post->ID, 'カスタムタクソノミー名');
if ( !empty($terms) ) {
foreach ( $terms as $term ) {
echo '<span>' . $term->name . '</span>';
}
}
home.phpに特定のタクソノミーの特定のタームの記事をのせる
<?php
$args = array(
post_type => 'post',
posts_per_page => 10,
taxonomy => [タクソノミー名],
term => [ターム名]
);
$posts = new WP_Query($args);
?>
<?php
if( $posts->have_posts() ) :
while( $posts->have_posts() ) :
$posts->the_post();
?>
--- 繰り返し処理 ---
<?php
endwhile; endif; wp_reset_postdata();
?>
single.phpにタームの関連記事を載せる
<?php
$terms = get_the_terms($post->ID, 'カスタムタクソノミーのスラッグ名');
foreach( $terms as $term ) {
$slug = $term->slug
}
?>
<?php
$arg = array(
'post_type' => 'カスタム投稿タイプのスラッグ',
'posts_per_page' => 4,
'orderby' => 'rand',
'post__not_in' => array($post->ID),
'tax_query' => array(
array(
'taxonomy' => 'カスタムタクソノミーのスラッグ',
'field' => 'slug',
'terms' => $slug
)
)
);
$wp_query = new WP_Query($arg);
?>
<?php if( $wp_query->have_posts() ): ?>
<?php while( $wp_query->have_posts() ): ?>
<?php $wp_query->the_post(); ?>
--- 繰り返し処理 ---
<?php endwhile; endif; ?>
<?php wp_reset_postdata(); ?>