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;
これらしい
未検証