http://naoyu.net/wordpress/tax_query/583/
ここに感謝
そもそもタクソノミーのタームを全て取得するコードが
あまりメジャーじゃないから悩んだ。
これでカスタムポストの全記事をターム別に一覧表示できる。
【備考】
アーカイブページで表現できるのはポストタイプのみで
タクソノミーページの全記事アーカイブはタクソノミー – タクソノミー名では
そのテンプレートが使われなかった。
つまりそんな表示はできない
/タクソノミー名/ではぺーじがありません。
/タクソノミー名/ラベル名/で一覧が表示されたようにみえたが
タクソノミーphpで表示されただけで ラベル名の部分は適当なもじでも同じように全部でた。
つまりないからタクソノミーページを表示してるだけだ。
つまり
固定ページに書いて表現する。
デフォルトで この表現であったら良いのに。
そのうちなるかな?
タクソノミーのタームを全て取得するコード
$args = array(
'parent' => 0,
'hierarchical' => 0,
'orderby' => 'term_order', // Category Order and Taxonomy Terms Order を使用
'order' => 'ASC'
);
$taxonomy_name = 'cate_jirei';
$taxonomys = get_terms($taxonomy_name,$args);
if(!is_wp_error($taxonomys) && count($taxonomys)):
foreach($taxonomys as $taxonomy_term):
$url = get_term_link($taxonomy_term->slug, $taxonomy_name);
?>
<h3><div class="jirei_title"><i class="icon-doc-inv"></i>
<a href="<?php echo $url; ?>">
<?php
echo $taxonomy_term->name;
?>
</a>
</div>
</h3>
<?php endforeach; endif; ?>
$taxonomy_name = 'cate_jirei';
$taxonomys = get_terms($taxonomy_name,$args);
これだろう
あとは
フォーチでさらにクエリポストでまわした。
<?php
$args = array(
'parent' => 0,
'hierarchical' => 0,
'orderby' => 'term_order', // Category Order and Taxonomy Terms Order を使用
'order' => 'ASC'
);
$taxonomy_name = 'cate_jirei';
$taxonomys = get_terms($taxonomy_name,$args);
if(!is_wp_error($taxonomys) && count($taxonomys)):
foreach($taxonomys as $taxonomy_term):
$url = get_term_link($taxonomy_term->slug, $taxonomy_name);
?>
<h3><div class="jirei_title"><i class="icon-doc-inv"></i>
<a href="<?php echo $url; ?>">
<?php
echo $taxonomy_term->name;
?>
</a>
</div>
</h3>
<!----------------------BOX ALL----------------------------->
<div class="jirei_box_all">
<?php
$args = array(
'posts_per_page' => -1,
//'orderby' => 'menu_order',
//'order' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => $taxonomy_name,
'field' => 'slug',
'terms' => array( $taxonomy_term->slug ),
//'operator'=>'NOT IN'
),
),
//カテ例 'cat'=> 4,
//カテ複数例 'cat'=> array(4,6)
);
?>
<!----/宣言----->
<!----宣言2----->
<?php
query_posts( $args );
?>
<!--★★★ループ基本-->
<?php
if ( have_posts () ) :
while ( have_posts() ) :
the_post();
?>
<div class="jirei_box">
<div class="jirei_box_img" style="height:210px;">
<a href="<?php the_permalink(); ?>">
<?php
$title= get_the_title();
echo wp_get_attachment_image(get_post_meta($post->ID,"jirei_gazou",true),W210,0,array('alt'=>$title,'title'=>$title)); ?>
</a>
<?php //new
$days=30;
$today=date('U'); $entry=get_the_time('U');
$diff1=date('U',($today - $entry))/86400;
if ($days > $diff1) {
echo '<div class="new_icon"><img src="/img/new_icon/rainbow1.gif" width="31" height="12" alt="愛知春日井ホームページ制作NEW記事"></div>';
}
?>
</div>
<h4><div class="jirei_sub_title"><i class="icon-dot-circled"></i>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?>
</a></div></h4>
</div>
<?php
endwhile;
endif;
?>
<?php wp_reset_query(); ?>
<div style="clear:both"></div>
</div class="jirei_box_all">
<div style="padding-top:30px;"></div>
<!----------------------BOX ALL----------------------------->
<?php endforeach; endif; ?>
原文はこうだ
<?php
$args = array(
'parent' => 0,
'hierarchical' => 0,
'orderby' => 'term_order', // Category Order and Taxonomy Terms Order を使用
'order' => 'ASC'
);
$taxonomy_name = 'item_category';
$taxonomys = get_terms($taxonomy_name,$args);
if(!is_wp_error($taxonomys) && count($taxonomys)):
foreach($taxonomys as $taxonomy):
$url = get_term_link($taxonomy->slug, $taxonomy_name);
$tax_posts = get_posts(array(
'post_type' => get_post_type(),
'posts_per_page' => 5, // 表示させたい記事数
'tax_query' => array(
array(
'taxonomy'=>'item_category',
'terms'=>array( $taxonomy->slug ),
'field'=>'slug',
'include_children'=>true,
'operator'=>'IN'
),
'relation' => 'AND'
)
));
if($tax_posts):
?>
<h2 id="<?php echo esc_html($taxonomy->slug); ?>" class=""><a href="<?php echo $url; ?>"><?php echo esc_html($taxonomy->name); ?></a></h2>
<ul>
<?php foreach($tax_posts as $tax_post): ?>
<li>
<span class="thumb">
<a href="<?php echo get_permalink($tax_post->ID); ?>">
<?php if(has_post_thumbnail($tax_post->ID)) {
echo get_the_post_thumbnail($tax_post->ID,'post-thumbnail');
} ?>
</a>
</span>
<span class="title"><?php echo get_the_title($tax_post->ID); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php
endif;
endforeach;
endif;
?>
さらにタクソノミー シーズンで表現
<?php
$args = array(
'parent' => 0,
'hierarchical' => 0,
'orderby' => 'term_order', // Category Order and Taxonomy Terms Order を使用
'order' => 'ASC'
);
$taxonomy_name = 'item_category';
$taxonomys = get_terms($taxonomy_name,$args);
if(!is_wp_error($taxonomys) && count($taxonomys)):
foreach($taxonomys as $taxonomy):
$url = get_term_link($taxonomy->slug, $taxonomy_name);
$this_term = get_query_var( 'term' );
$tax_posts = get_posts(array(
'post_type' => get_post_type(),
'posts_per_page' => 5, // 表示させたい記事数
'tax_query' => array(
array(
'taxonomy'=>'item_category',
'terms'=>array( $taxonomy->slug ),
'field'=>'slug',
'include_children'=>true,
'operator'=>'IN'
),
array(
'taxonomy'=>'season',
'terms'=>array( $this_term ),
'field'=>'slug',
'include_children'=>true,
'operator'=>'AND'
),
'relation' => 'AND'
)
));
if($tax_posts):
?>
<h2 id="<?php echo esc_html($taxonomy->slug); ?>" class=""><a href="<?php echo $url; ?>"><?php echo esc_html($taxonomy->name); ?></a></h2>
<ul>
<?php foreach($tax_posts as $tax_post): ?>
<li>
<span class="thumb">
<a href="<?php echo get_permalink($tax_post->ID); ?>">
<?php if(has_post_thumbnail($tax_post->ID)) {
echo get_the_post_thumbnail($tax_post->ID,'post-thumbnail');
} ?>
</a>
</span>
<span class="title"><?php echo get_the_title($tax_post->ID); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php
endif;
endforeach;
endif;
?>
さらにこの記事に書くが
何件以上あった場合には 全て表示を表示したい
まずタームなので
上記コードの
$taxonomys = get_terms($taxonomy_name,$args);
を使い
$count = $taxonomy_term->count;
とし
それで分岐 wp_reset_queryの前
リンク先は
$url = get_term_link($taxonomy_term->slug, $taxonomy_name);
を使いそのままえこー
演算子はここを参照
http://www.tohoho-web.com/js/operator.htm
<?php if($count > 9):
?>
<div style="text-align:right; padding-top:0px; padding-bottom:15px; padding-right:30px;">
<a href="<?php echo $url; ?>" style="color:#FF3300; font-size:13px;">すべて見る ▶▶</a>
</div>
<?php
endif;
?>
参考
タームIDで記事数取得:
get_term( $chosen_id, 'タクソノミースラッグ' )->count
タームスラッグで記事数取得:
get_term_by( 'slug', 'タームスラッグ', 'タクソノミースラッグ' )->count
参照:codex.wordpress.org
get_term
get_term_by
カテゴリは
get_category($id)->category_count;
これらしい
未検証