WordPressのカスタム投稿タイプで新着一覧を表示する
web制作に役立つ情報を紹介する「どやブログ」さんの
「どや!?WordPressでのサイト制作を簡単にしてくれる魔法のコード」
こちらを参考にさせて頂きました!
シングルページで同一タクソノミーだけを出す場合
まずカスタム投稿タイプのシングルページをオリジナルの内容にしたい時は、ファイル名を
single-[投稿タイプ名].php
にする。
<?php $term = array_shift(get_the_terms($post->ID, '[カスタムタクソノミーのスラッグ]')); ?> <?php $tax_posts = get_posts('post_type=[投稿タイプのスラッグ]& taxonomy='[カスタムタクソノミーのスラッグ]'&term='.esc_html($term->slug)); if($tax_posts): ?> <ul> <?php foreach($tax_posts as $tax_post): ?> <?php if ($post->ID != $tax_post->ID): ?> <li><span class='date'> <?php the_time('Y年m月d日'); ?> </span><br /> <a href="<?php echo get_permalink($tax_post->ID); ?>" class="newstitle"> <?php echo esc_html($tax_post->post_title); ?></a> </li> <?php else: ?> <li><span class='date'> <?php the_time('Y年m月d日'); ?> </span><br /> <?php echo esc_html($tax_post->post_title); ?></li> <?php endif; ?> <?php endforeach; ?> </ul> <?php endif; ?> </ul>
同一カスタム投稿タイプの一覧を出す場合(タクソノミーも出力)
上のソースは、子カテゴリーのみを出す場合でしたが、親カテゴリーの新着一覧表示をさせて、
子カテゴリー名も出力する場合です。
<ul> <?php // ▽ポストタイプとタクソノミーを入力 $post_type = '[投稿タイプのスラッグ]'; $taxonomy = '[カスタムタクソノミーのスラッグ]'; $term = ''; // △ $args=array( 'post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => 5, 'orderby' => 'date', 'order' => DESC, 'caller_get_posts'=> 1 ); $my_posts = get_posts($args); foreach ($my_posts as $post) { setup_postdata($post); $post_title = $post->post_title; ?> <li><span class='date'> <?php the_time('Y年m月d日'); ?> </span><br /> <?php $terms = get_the_terms( $post->ID, $taxonomy ); if ( $terms && ! is_wp_error( $terms ) ) : $draught_links = array(); foreach ( $terms as $term ) { echo '【' . get_the_term_list( $post->ID, '[カスタムタクソノミーのスラッグ]' ) . '】'; echo '<a href="'; the_permalink(); echo '" class="newstitle">'; echo mb_substr($post->post_title, 0, 20).'...'; echo '</a>'; } endif; } ?> </li> </ul>